lux lux - 1 month ago 18
Node.js Question

Aurelia npm install: tons of "gyp ERR"

These types of questions are a dime a dozen, and I've gone through resource after resource but nothing seems to work:



Here's the deal, I'm pretty new to NodeJS and Aurelia, however my ancedotal experience is that with the advent of the recent front-end revolution and with all of its tooling, folks really made things look deceptively simple.
I'm sure we've all seen commands akin to: "just run
do my-work-for-me
and your project is done!"

Take for instance the Aurelia guide. After navigating to the working directory, all you need to do is run:

npm install


Well, no.
npm install
depends on
node-gyp
, which you must install manually. Well, you can't install
node-gyp
before you install Python. But don't get the latest one, since > 3.x is not supported. Once you install that, you encounter issues with C++ compilers required by
node-gyp
. So we install Microsoft VS 2012 to get the compilers.

What I've done:


  1. Set PYTHON as an environment variable

    C:\Users\[name]>py
    Python 2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.

  2. Set the applicable VS version in npm, as proven by the getter:

    C:\Users\[name]>npm config get msvs_version
    2012



That said, I still encounter the following error when I attempt to run
npm install
from my application's target directory:

gyp ERR! build error
gyp ERR! stack Error: `C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe` failed with exit c
ode: 1
gyp ERR! stack at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\npm\node_modules\nod
e-gyp\lib\build.js:270:23)
gyp ERR! stack at emitTwo (events.js:88:13)
gyp ERR! stack at ChildProcess.emit (events.js:173:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:201:12)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm
\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\_workspaces\skeleton-navigation-1.0.0-beta.1.0.2\node_modules\utf-8-validate
gyp ERR! node -v v5.2.0
gyp ERR! node-gyp -v v3.0.3
gyp ERR! not ok
npm WARN install:utf-8-validate@1.2.1 utf-8-validate@1.2.1 install: `node-gyp rebuild`
npm WARN install:utf-8-validate@1.2.1 Exit status 1

lux lux
Answer

I really, truly don't like answering my own questions, but I was able to resolve this by taking the following steps:

  1. Uninstall Node.js
  2. Uninstall Microsoft Visual Studio 2012
  3. Uninstall any remaining C++ 2010 x86/x64 redistributables
  4. Reinstall Node.js
  5. Use Node.js to reinstall npm
  6. Install Microsoft Studio 2013 (Express Desktop)

At this point, I should have been able to run npm install against the Aurelia directory, however I was still failing due to the error noted in the description of the issue.

  1. Explicitly tell npm to use Microsoft Studio 2013, by issuing the command:

    npm config set msvs_version 2013 --global
    
  2. Now, subsequent to this command, I was able to successfully execute npm install without any GYP errors.

I don't know why, but for whatever reason node-gyp doesn't seem to play nice with 2012, so if you're hitting this issue, I'd opt for 2013, which is actually referenced here: https://github.com/nodejs/node-gyp

Comments