NPM на Cygwin: неожиданный конец файла - PullRequest
17 голосов
/ 20 мая 2011

Я пытаюсь использовать 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 express@2.3.5 Error: Failed tar "-mvxpf" "-" "--no-same-owner" "-C" "/tmp/npm-1305893882865/1305893885765-0.008730818051844835/contents/___package.npm"

Есть несколько советов, которые я погуглил (npm cache clean и rebaseall), но ничего не помогло.Итак, есть ли способ использовать NPM в Cygwin?

Ответы [ 5 ]

3 голосов
/ 22 июля 2011
  1. Удалять каталог tmp

    rm -R /tmp/*
    
  2. Очистить кэш npm

    npm cache clean
    
  3. Выйдите из текущей оболочки и запустите пепельницу или приборную панель (из cygwin / bin)

  4. В оболочке ash (или dash) выполните команду rebaseall.

    /bin/rebaseall -v
    
  5. Выйдите из системы и перезапустите новую оболочку bash.

  6. Попробуйте еще раз команду npm.

    npm install <package>
    
2 голосов
/ 23 июня 2011

У меня часто возникает такая же проблема.

Я не знаю, как ее исправить, однако я знаю, что ошибка происходит нерегулярно.Если вы попытаетесь установить пакет npm снова, он может работать.Просто продолжайте повторную попытку, и в конечном итоге это сработает.

Когда он застрянет на 100% процессоре, просто отмените его (ctrl + c) и попробуйте снова.Кроме того, не устанавливайте другое окно во время установки пакета.

Вы также можете просто вручную установить пакет с помощью wget и tar в папке node_modules.

1 голос
/ 15 июля 2011

небольшой патч для /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,
1 голос
/ 06 июля 2011

Попробуйте удалить временные файлы с помощью этой команды:

$ rm /tmp/npm-*

и установите снова.работал для меня.

0 голосов
/ 06 сентября 2011

Если это произойдет, попробуйте удалить частично извлеченные модули из каталога .npm (может находиться в домашнем каталоге: ~ / .npm) и повторите попытку (дважды или более).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...