NODE_PATH throws error when NPM starts on windows

2019-05-17 15:22发布

问题:

I am trying to built a MEAN Todo app by following https://github.com/michaelcheng429/super-mean-stack

package.json

{
 "name": "ToDoThoughts",
 "version": "1.0.0",
 "description": "",
 "main": "index.js",
 "scripts": {
   "start": "NODE_PATH=$NODE_PATH:./app  node server",
   "dev": "npm start & webpack-dev-server --progress --colors"
 },
 "license": "ISC",
 "dependencies": {
   "angular": "1.4.12",
   "angular-ui-router": "0.3.1",
   "body-parser": "1.15.2",
   "bootstrap": "3.3.7",
   "express": "4.14.0"
 },
 "devDependencies": {
   "babel-core": "6.17.0",
   "babel-preset-es2015": "6.16.0",
   "raw-loader": "0.5.1",
   "webpack": "1.13.2",
   "webpack-dev-server": "1.16.2"
 },
 "engines": {
   "node": "5.5.0"
 }
}

I am getting error when i run the command "npm run dev" in the command prompt. I have also attached npm.debug.log

> ToDoThoughts@1.0.0 start C:\Projects\ToDoThoughts
> NODE_PATH=$NODE_PATH:./app  node server

'NODE_PATH' is not recognized as an internal or external command,
operable program or batch file.

npm ERR! Windows_NT 10.0.14393
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\Selva\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js" "start"
npm ERR! node v6.5.0
npm ERR! npm  v3.10.8
npm ERR! code ELIFECYCLE
npm ERR! ToDoThoughts@1.0.0 start: `NODE_PATH=$NODE_PATH:./app  node server`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the ToDoThoughts@1.0.0 start script 'NODE_PATH=$NODE_PATH:./app  node server'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the ToDoThoughts package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     NODE_PATH=$NODE_PATH:./app  node server
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs ToDoThoughts
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls ToDoThoughts
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     C:\Projects\ToDoThoughts\npm-debug.log

npm.debug.log

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Users\\Selva\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'start' ]
2 info using npm@3.10.8
3 info using node@v6.5.0
4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info lifecycle ToDoThoughts@1.0.0~prestart: ToDoThoughts@1.0.0
6 silly lifecycle ToDoThoughts@1.0.0~prestart: no script for prestart, continuing
7 info lifecycle ToDoThoughts@1.0.0~start: ToDoThoughts@1.0.0
8 verbose lifecycle ToDoThoughts@1.0.0~start: unsafe-perm in lifecycle true
9 verbose lifecycle ToDoThoughts@1.0.0~start: PATH: C:\Users\Selva\AppData\Roaming\npm\node_modules\npm\bin\node-gyp-bin;C:\Projects\ToDoThoughts\node_modules\.bin;C:\Users\Selva\AppData\Roaming\npm\node_modules\npm\bin\node-gyp-bin;C:\Projects\ToDoThoughts\node_modules\.bin;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files (x86)\Skype\Phone\;C:\ProgramData\chocolatey\bin;C:\Program Files\nodejs\;C:\Program Files\Git\cmd;C:\Users\Selva\AppData\Local\Microsoft\WindowsApps;C:\Users\Selva\AppData\Roaming\npm;C:\Users\Selva\AppData\Local\atom\bin;C:\Program Files\Git\bin;C:\Projects\ToDoThoughts
10 verbose lifecycle ToDoThoughts@1.0.0~start: CWD: C:\Projects\ToDoThoughts
11 silly lifecycle ToDoThoughts@1.0.0~start: Args: [ '/d /s /c', 'NODE_PATH=$NODE_PATH:./app  node server' ]
12 silly lifecycle ToDoThoughts@1.0.0~start: Returned: code: 1  signal: null
13 info lifecycle ToDoThoughts@1.0.0~start: Failed to exec start script
14 verbose stack Error: ToDoThoughts@1.0.0 start: `NODE_PATH=$NODE_PATH:./app  node server`
14 verbose stack Exit status 1
14 verbose stack     at EventEmitter.<anonymous> (C:\Users\Selva\AppData\Roaming\npm\node_modules\npm\lib\utils\lifecycle.js:255:16)
14 verbose stack     at emitTwo (events.js:106:13)
14 verbose stack     at EventEmitter.emit (events.js:191:7)
14 verbose stack     at ChildProcess.<anonymous> (C:\Users\Selva\AppData\Roaming\npm\node_modules\npm\lib\utils\spawn.js:40:14)
14 verbose stack     at emitTwo (events.js:106:13)
14 verbose stack     at ChildProcess.emit (events.js:191:7)
14 verbose stack     at maybeClose (internal/child_process.js:877:16)
14 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
15 verbose pkgid ToDoThoughts@1.0.0
16 verbose cwd C:\Projects\ToDoThoughts
17 error Windows_NT 10.0.14393
18 error argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\Selva\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js" "start"
19 error node v6.5.0
20 error npm  v3.10.8
21 error code ELIFECYCLE
22 error ToDoThoughts@1.0.0 start: `NODE_PATH=$NODE_PATH:./app  node server`
22 error Exit status 1
23 error Failed at the ToDoThoughts@1.0.0 start script 'NODE_PATH=$NODE_PATH:./app  node server'.
23 error Make sure you have the latest version of node.js and npm installed.
23 error If you do, this is most likely a problem with the ToDoThoughts package,
23 error not with npm itself.
23 error Tell the author that this fails on your system:
23 error     NODE_PATH=$NODE_PATH:./app  node server
23 error You can get information on how to open an issue for this project with:
23 error     npm bugs ToDoThoughts
23 error Or if that isn't available, you can get their info via:
23 error     npm owner ls ToDoThoughts
23 error There is likely additional logging output above.
24 verbose exit [ 1, true ]

回答1:

NPM scripts are executed in the shell from which NPM was invoked.

NODE_PATH=$NODE_PATH:./app node server will not behave correctly if you're using the command prompt or Powershell on Windows. If you already have Git installed, then you should use Git Bash which should already be available.

Otherwise, you might install the MSYS' or Cygwin's Bash shell.



回答2:

Node on installation should be installed in your systems environment variables and should be called using node in PowerShell or cmd.

This should mean there's no need to always insert the node path in your environment variables.

Make sure you're running PowerShell or cmd as administrator as well, this ensure system environment variables are being picked up.

Lastly, in your package.json change to:

"scripts": {
    "start": "node server.js",
    "dev": "start cmd /k \"webpack-dev-server --progress --colors\" & node server.js"
}

then run npm start and your server should be running.



回答3:

"scripts": {
    "start": "node server.js",
    "dev": "start cmd /k \"webpack-dev-server --progress --colors\" & node server.js"
  }


回答4:

npm cache clean Then clear package-lock.json file