2013-10-24 114 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不會將環境路徑鏈接到節點 –