2011-05-20 35 views
17

我想使用NPM在Cygwin的,但不斷收到以下錯誤意外結束:NPM在Cygwin:文件

ERR! tar "-mvxpf" "-" "--no-same-owner" "-C" "/tmp/npm-1305893882865/1305893885765-0.008730818051844835/contents/___package.npm" tar: Unexpected EOF in archive 
ERR! tar "-mvxpf" "-" "--no-same-owner" "-C" "/tmp/npm-1305893882865/1305893885765-0.008730818051844835/contents/___package.npm" tar: Unexpected EOF in archive 
ERR! tar "-mvxpf" "-" "--no-same-owner" "-C" "/tmp/npm-1305893882865/1305893885765-0.008730818051844835/contents/___package.npm" tar: Error is not recoverable: exiting now 
ERR! tar "-mvxpf" "-" "--no-same-owner" "-C" "/tmp/npm-1305893882865/1305893885765-0.008730818051844835/contents/___package.npm" 
ERR! Failed unpacking /tmp/npm-1305893882865/1305893885765-0.008730818051844835/tmp.tgz 
ERR! couldn't unpack /tmp/npm-1305893882865/1305893885765-0.008730818051844835/tmp.tgz to /tmp/npm-1305893882865/1305893885765-0.008730818051844835/contents 
verbose about to build /home/Tema/node_modules/express 
ERR! error installing [email protected] Error: Failed tar "-mvxpf" "-" "--no-same-owner" "-C" "/tmp/npm-1305893882865/1305893885765-0.008730818051844835/contents/___package.npm" 

有幾個建議我用Google搜索(NPM緩存清理和rebaseall),但沒有任何幫助。那麼,有什麼方法可以在Cygwin中使用NPM?

+0

我也是!我得到了類似的錯誤,如上所述,做了一個npm緩存清理,也rebaseall現在npm安裝表達似乎掛起gzip消耗100%cpu? – molicule 2011-05-21 03:42:42

+0

嗯,不,它顯示上面的錯誤,並退出與「NPM不行」。看起來像我們需要切換到Linux虛擬機... – spacevillain 2011-05-21 08:04:13

+0

如果你還沒有,可能值得在#nodejs中詢問這個問題。 – 2011-06-03 12:55:19

回答

2

我自己經常遇到同樣的問題。

我不知道如何解決它,但我確實知道錯誤發生的不規則。如果您嘗試再次安裝npm軟件包,則可能會起作用。只要不斷重試,它將最終奏效。

當它卡在100%cpu時,取消它(ctrl + c)然後重試。另外,在安裝包裝時不要切換到另一個窗口。

您也可以在node_modules文件夾內用wget和tar手動安裝軟件包。

+0

它爲我工作了第三次。 – Shagglez 2011-08-17 11:18:46

1

嘗試刪除與該命令的臨時文件:

$ rm /tmp/npm-* 

然後再重新安裝。爲我工作。

1

小補丁/usr/local/lib/node_modules/npm/lib/utils/tar.js

--- tar.js.old 2011-07-15 15:23:09.205440100 +0700 
+++ tar.js 2011-07-15 15:25:58.327113300 +0700 
@@ -20,6 +20,7 @@ 
, relativize = require("./relativize") 
, cache = require("../cache") 
, excludes = require("./excludes") 
+ , child_process = require("child_process"); 

exports.pack = pack 
exports.unpack = unpack 
@@ -168,13 +169,17 @@ 
//console.error(npm.config.get("gzipbin")+" --decompress --stdout " 
// +tarball+" | "+npm.config.get("tar")+" -mvxpf - -o -C " 
// +tmp) 
- pipe(spawn(npm.config.get("gzipbin") 
- , ["--decompress", "--stdout", tarball] 
- , process.env, false) 
- , spawn(npm.config.get("tar") 
- , ["-mvxpf", "-", "-o", "-C", tmp] 
- , process.env, false) 
- , function (er) { 
+ // pipe(spawn(npm.config.get("gzipbin") 
+ // , ["--decompress", "--stdout", tarball] 
+ // , process.env, false) 
+ // , spawn(npm.config.get("tar") 
+ // , ["-mvxpf", "-", "-o", "-C", tmp] 
+ // , process.env, false) 
+ // , function (er) { 
+ 
+ child_process.exec(npm.config.get("gzipbin")+" --decompress --stdout " 
+ +tarball+" | "+npm.config.get("tar")+" -mvxpf - --no-same-owner -C " +tmp 
+ , function (er, stdout, stderr) { 
// if we're not doing ownership management, 
// then we're done now. 
if (er) return log.er(cb, 
+0

我試過這個補丁,它不起作用(節點0.4.11,npm 1.0.27,Cygwin/WinXP)。錯誤是:'npm ERR!無法將/tmp/npm-1314406924278/1314406936833-0.9859440890140831/tmp.tgz解壓到/tmp/npm-1314406924278/1314406936833-0.9859440890140831/contents npm ERR!錯誤:EACCES,權限被拒絕'/tmp/npm-1314406924278/1314406936833-0.9859440890140831/contents/__ package.npm/package''。我已經設置了'unsafe-perm',並確保目錄需要權限,還有其他想法嗎? (我嘗試了這個問題中列出的所有建議) – Amro 2011-08-27 01:12:44

+0

我有同樣的問題。 – 2011-08-27 21:02:32

3
  1. 吹tmp目錄遠

    rm -R /tmp/* 
    
  2. 清除NPM的緩存

    npm cache clean 
    
  3. 退出當前shell並啓動一個ash或dash shell(從cygwin/bin中)

  4. 在ash(或破折號)shell中執行rebaseall命令。

    /bin/rebaseall -v 
    
  5. 退出並重新啓動一個新的bash shell。

  6. 再次嘗試您的npm命令。

    npm install <package> 
    
+0

不適合我:( – 2011-09-05 20:03:10

+0

npm緩存乾淨爲我做了,謝謝:) – mck 2013-11-12 22:00:40

0

如果它發生時,儘量從.npm目錄中刪除部分提取模塊(可能位於主目錄:〜/ .npm),然後再試一次(兩次或更多)。