2013-10-24 85 views
7

所以我的问题是这样的。我有一个package.json项目。当我在命令提示符(cmd.exe)中运行“npm install”时,按预期方式安装。但是,当我在PowerShell(powershell.exe)中做同样的事情时,我得到一个错误:“npm ERR!错误:ENOENT,打开'c:\ package.json'”,即使我运行“npm install”该项目。它总是在c中搜索package.json:出于某种原因我无法理解。npm安装在Windows PowerShell中不起作用

下面是NPM-的debug.log(也被写入IC:即使我的路径是C:\代码\ myProject的):

0 info it worked if it ends with ok 
1 verbose cli [ 'C:\\Program Files\\nodejs\\\\node.exe', 
1 verbose cli 'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js', 
1 verbose cli 'install' ] 
2 info using [email protected] 
3 info using [email protected] 
4 verbose node symlink C:\Program Files\nodejs\\node.exe 
5 error install Couldn't read dependencies 
6 error Error: ENOENT, open 'c:\package.json' 
7 error If you need help, you may report this log at: 
7 error  <http://github.com/isaacs/npm/issues> 
7 error or email it to: 
7 error  <[email protected]> 
8 error System Windows_NT 6.2.9200 
9 error command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" 
10 error cwd c:\ 
11 error node -v v0.10.21 
12 error npm -v 1.3.11 
13 error path c:\package.json 
14 error code ENOENT 
15 error errno 34 
16 verbose exit [ 34, true ] 

我不能找到解决这个问题的任何地方。由于节点和npm本身都工作,所以PATH变量设置正确。

+0

我不知道node.js,但如果它根据源路径搜索包,那么node.exe之前的双\\可能是问题。 HTH –

回答

4

使用.npmrc明确设置前缀:

  • 转到\Users\%USERNAME%\.npmrc。例如,在PowerShell中:

    Notepad "\Users\$env:USERNAME\.npmrc" 
    
  • 设置前缀:

    prefix = "C:/Program Files/nodejs" 
    

参考

+0

如果你有一个NODE_HOME环境变量,你也可以使用'“$ {NODE_HOME}”' – LoganMzz

4

对于我来说,这是很容易做到这一点在PowerShell中。

$env:Path += ";C:\Program Files\nodejs\" 

在powershell中运行“npm”,然后马上跑出来。

+0

这不会永久设置它。新的shell不会将环境路径链接到节点 –