错误:npm ERR!write after end

59
我遇到了安装Cordova和Ionic的问题。 一开始,由于似乎是损坏的安装文件,我无法安装,这导致我卸载了NodeJS-Cordova-Ionic。

现在,我已经重新安装了NodeJS,没有出现任何问题,但当涉及到著名的命令行:
npm install -g cordova ionic时,我遇到了这个错误:
npm ERR! write after end 然后每次我尝试安装cordova ionic时,我都会收到不同软件包的相同错误...
以下是我收到的错误信息:
C:\Windows\System32>npm install -g cordova ionic
npm ERR! write after end    
npm ERR! A complete log of this run can be found in:
npm ERR!     d:\Profiles\cjolliet\AppData\Roaming\npm-cache\_logs\2018-03-07T09_31_22_439Z-debug.log    
C:\Windows\System32>npm install -g cordova ionic
npm ERR! code ETARGET
npm ERR! notarget No matching version found for ansi-styles@^3.2.1
npm ERR! notarget In most cases you or one of your dependencies are requesting
npm ERR! notarget a package version that doesn't exist.
npm ERR! notarget
npm ERR! notarget It was specified as a dependency of 'chalk'
npm ERR! notarget    
npm ERR! A complete log of this run can be found in:
npm ERR!     d:\Profiles\cjolliet\AppData\Roaming\npm-cache\_logs\2018-03-07T09_40_04_399Z-debug.log    
C:\Windows\System32>
C:\Windows\System32>npm install -g cordova ionic
npm ERR! code ETARGET
npm ERR! notarget No matching version found for supports-color@^5.3.0
npm ERR! notarget In most cases you or one of your dependencies are requesting
npm ERR! notarget a package version that doesn't exist.
npm ERR! notarget
npm ERR! notarget It was specified as a dependency of 'chalk'
npm ERR! notarget    
npm ERR! A complete log of this run can be found in:
npm ERR!     d:\Profiles\cjolliet\AppData\Roaming\npm-cache\_logs\2018-03-07T09_44_05_319Z-debug.log

如果有人能帮我,将不胜感激;-) 祝你有一个愉快的一天...

编辑1:安装了一些软件包并再次尝试后,现在我得到了这个:

npm install -g cordova ionic
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\path-is-absolute-86a430cb\package.json'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\parseurl-f42ab09d\package.json'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\path-is-absolute-86a430cb\index.js'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\opn-07c4c2dd\package.json'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\os-tmpdir-c1eaefc0\package.json'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\parse-glob-106d32b7\package.json'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\parseurl-f42ab09d\README.md'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\path-is-absolute-86a430cb\license'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\opn-07c4c2dd\index.js'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\os-tmpdir-c1eaefc0\index.js'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\parse-glob-106d32b7\README.md'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\parseurl-f42ab09d\LICENSE'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\superagent-4d7c9590\lib\agent-base.js'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\path-is-absolute-86a430cb\readme.md'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\os-tmpdir-c1eaefc0\license'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\opn-07c4c2dd\license'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\parse-glob-106d32b7\LICENSE'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\parseurl-f42ab09d\index.js'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\superagent-4d7c9590\lib\client.js'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\opn-07c4c2dd\readme.md'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\os-tmpdir-c1eaefc0\readme.md'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\parse-glob-106d32b7\index.js'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\parseurl-f42ab09d\HISTORY.md'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\opn-07c4c2dd\xdg-open'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\inquirer-b71d51ab\lib\utils\events.js'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\inquirer-b71d51ab\lib\utils\paginator.js'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\inquirer-b71d51ab\lib\utils\readline.js'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\inquirer-b71d51ab\lib\utils\screen-manager.js'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\readdirp-34d428ea\test\bed\root_dir2\root_dir2_file1.ext1'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\inquirer-b71d51ab\lib\utils\utils.js'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\readdirp-34d428ea\test\bed\root_dir2\root_dir2_file2.ext2'
npm WARN tar ENOENT: no such file or directory, lstat 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\cordova-lib-a64e9936\src\cordova\metadata'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\qs-095a6ca4\lib\formats.js'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\qs-095a6ca4\lib\index.js'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\qs-095a6ca4\lib\parse.js'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\qs-095a6ca4\lib\stringify.js'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\qs-095a6ca4\lib\utils.js'
npm WARN tar ENOENT: no such file or directory, lstat 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\cordova-app-hello-world-60bb7e30\template_src\res\icon\blackberry10'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\tiny-lr-cf15ff1c\src\client.js'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\tiny-lr-cf15ff1c\src\index.js'
npm WARN tar ENOENT: no such file or directory, open 'd:\Profiles\cjolliet\AppData\Roaming\npm\node_modules\.staging\tiny-lr-cf15ff1c\src\server.js'
npm ERR! code EINTEGRITY
npm ERR! Verification failed while extracting readable-stream@^2.0.5:
npm ERR! sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ== integrity checksum failed when using sha512: wanted sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ== but got sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==. (25689 bytes)

你的 Node 和 npm 版本是什么? - Melchia
Node: v8.10.0 Npm: 5.7.1 - Clément Jolliet
10个回答

112

尝试安装最新的npm版本,这种情况在ionic中经常发生。

npm install -g npm@latest
npm cache verify
npm i 

如果这不起作用,我建议你换成yarn。它更快更容易使用。这是链接,可下载YARN。 安装后只需运行此命令yarn global add cordova ionic

Ionic CLI默认使用npm。因此,请进入您的项目并运行$ yarn install

如果您想让Ionic以后默认使用yarn,请运行此命令:$ ionic config set -g yarn true


降级NPM后仍然存在问题。 尝试使用Yarn:安装Ionic没有问题,但是当我启动一个项目时,在ionic-angular和@ionic\app-scripts中找不到package.json文件,出现错误。 - Clément Jolliet
1
是的,这是正常行为,因为ionic CLI默认使用npm。所以请进入您的项目并运行yarn install。如果要使ionic默认使用yarn,请运行以下命令:ionic config set -g yarn true - Melchia
1
对我来说,“npm cache verify”然后“npm install”解决了这个问题。 - Chakri
在Windows操作系统上工作时,创建React项目时出现错误。谢谢。 - Avinash Shinde

31

在我的情况下,我没有降低我的npm版本,因为这会引起其他依赖项的混乱。相反,我尝试运行

npm cache verify

错误已经消失...


15

请先更新最新版本的npm以运行该命令。

npm install npm@latest -g

然后运行这个命令,

npm install -g cordova ionic

更新时没有错误,但仍然无法安装Ionic,出现了相同的问题,但是针对ansi-styles@^3.2.1。 - Clément Jolliet
我可以安装ansi-styles,但在下一次尝试安装时,我收到了许多有关node_modules.staging中缺少文件的警告,并且当readable-stream正在提取时,出现了一个失败验证的ERR!代码EINTEGRITY。如果需要帮助回答,我可以发布完整输出。 - Clément Jolliet
这个案例是针对卸载Ionic的命令==> npm uninstall -g cordova ionic然后关闭Node.js CMD,现在安装ionic cordova==> npm install -g cordova ionic - AddWeb Solution Pvt Ltd
Ionic的安装似乎是成功的,但当我尝试创建项目时,出现了ERR: code ETARGET,没有找到匹配版本的ansi-styles。 - Clément Jolliet
关于 ERR:code ETARGET 错误,请创建一个新的问题。 - AddWeb Solution Pvt Ltd
尝试使用此链接https://dev59.com/cFcP5IYBdhLWcg3wu8W1#43931987,希望这能解决问题。 - Gautam

5

2018年7月28日更新

此问题与 npm 版本 5.7.1 相关

升级至 node 版本 8.11.3,使用 npm 版本 5.8.0 可以解决该问题


5

这个问题仍然在一些npm版本上随机发生。通过使用命令将npm版本降级到5.6.0,可以解决此问题。

npm install -g npm@5.6.0

希望这能帮助到某些人。

5

我曾经在使用npm@5.8安装ionic3项目时遇到了问题,但是我通过添加一些参数来解决了这个问题,可以尝试使用以下命令:

npm i --unsafe-perm

并且它有效。


4
只需运行npm cache verify即可,这将清理所有缓存。

4
我遇到了同样的问题。对于我的情况,我通过运行“npm install -g npm@latest”来更新npm至最新版本6.1.0。然后运行“npm cache verify”。

2
通常这个错误是由于您的杀毒软件阻止了更改文件的访问,解决方法如下:
1- 您可以尝试暂时关闭杀毒软件,然后再尝试安装。
2- 如果仅此还不行,尝试在安装时使用 --force 选项。
我曾经遇到过一些包的这个问题,使用上述两个步骤之一就解决了。
例如:
npm install -g cordova ionic --force

-1

之前的答案都没能帮到我。

幸运的是,经过了许多次“尝试和错误”,我找到了以下简单的解决方案:

  • 删除(或移动)文件“package-lock.json”,然后npm install就可以完美运行了。


提示:如果你的项目在Git仓库中:

  • 在“.gitignore”中添加文件“package-lock.json

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接