如何解决 npm 安装错误“npm ERR! 代码 1”

Woj*_*cki 7 npm gulp npm-install

我正在尝试安装 gulp,当我写的时候npm install我遇到了这个问题:

npm ERR! code 1
npm ERR! path D:\www\wegrow\node_modules\node-sass
npm ERR! command failed
npm ERR! command C:\Windows\system32\cmd.exe /d /s /c node scripts/build.js
npm ERR! Building: C:\Program Files (x86)\nodejs\node.exe D:\www\wegrow\node_modules\node-gyp\bin\node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp verb cli [
npm ERR! gyp verb cli   'C:\\Program Files (x86)\\nodejs\\node.exe',
npm ERR! gyp verb cli   'D:\\www\\wegrow\\node_modules\\node-gyp\\bin\\node-gyp.js',
npm ERR! gyp verb cli   'rebuild',
npm ERR! gyp verb cli   '--verbose',
npm ERR! gyp verb cli   '--libsass_ext=',
npm ERR! gyp verb cli   '--libsass_cflags=',
npm ERR! gyp verb cli   '--libsass_ldflags=',
npm ERR! gyp verb cli   '--libsass_library='
npm ERR! gyp verb cli ]
npm ERR! gyp info using node-gyp@3.8.0
npm ERR! gyp info using node@16.1.0 | win32 | ia32
npm ERR! gyp verb command rebuild []
npm ERR! gyp verb command clean []
npm ERR! gyp verb clean removing "build" directory
npm ERR! gyp verb command configure []
npm ERR! gyp verb check python checking for Python executable "python2" in the PATH
npm ERR! gyp verb `which` failed Error: not found: python2
npm ERR! gyp verb `which` failed     at getNotFoundError (D:\www\wegrow\node_modules\which\which.js:13:12)
npm ERR! gyp verb `which` failed     at F (D:\www\wegrow\node_modules\which\which.js:68:19)
npm ERR! gyp verb `which` failed     at E (D:\www\wegrow\node_modules\which\which.js:80:29)
npm ERR! gyp verb `which` failed     at D:\www\wegrow\node_modules\which\which.js:89:16
npm ERR! gyp verb `which` failed     at D:\www\wegrow\node_modules\isexe\index.js:42:5
npm ERR! gyp verb `which` failed     at D:\www\wegrow\node_modules\isexe\windows.js:36:5
npm ERR! gyp verb `which` failed     at FSReqCallback.oncomplete (node:fs:194:21)
npm ERR! gyp verb `which` failed  python2 Error: not found: python2
npm ERR! gyp verb `which` failed     at getNotFoundError (D:\www\wegrow\node_modules\which\which.js:13:12)
npm ERR! gyp verb `which` failed     at F (D:\www\wegrow\node_modules\which\which.js:68:19)
npm ERR! gyp verb `which` failed     at E (D:\www\wegrow\node_modules\which\which.js:80:29)
npm ERR! gyp verb `which` failed     at D:\www\wegrow\node_modules\which\which.js:89:16
npm ERR! gyp verb `which` failed     at D:\www\wegrow\node_modules\isexe\index.js:42:5
npm ERR! gyp verb `which` failed     at D:\www\wegrow\node_modules\isexe\windows.js:36:5
npm ERR! gyp verb `which` failed     at FSReqCallback.oncomplete (node:fs:194:21) {
npm ERR! gyp verb `which` failed   code: 'ENOENT'
npm ERR! gyp verb `which` failed }
npm ERR! gyp verb check python checking for Python executable "python" in the PATH
npm ERR! gyp verb `which` succeeded python C:\Python39\python.EXE
npm ERR! gyp ERR! configure error
npm ERR! gyp ERR! stack Error: Command failed: C:\Python39\python.EXE -c import sys; print "%s.%s.%s" % sys.version_info[:3];
npm ERR! gyp ERR! stack   File "<string>", line 1
npm ERR! gyp ERR! stack     import sys; print "%s.%s.%s" % sys.version_info[:3];
npm ERR! gyp ERR! stack                       ^
npm ERR! gyp ERR! stack SyntaxError: invalid syntax
npm ERR! gyp ERR! stack
npm ERR! gyp ERR! stack     at ChildProcess.exithandler (node:child_process:326:12)
npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:365:28)
npm ERR! gyp ERR! stack     at maybeClose (node:internal/child_process:1067:16)
npm ERR! gyp ERR! stack     at Socket.<anonymous> (node:internal/child_process:453:11)
npm ERR! gyp ERR! stack     at Socket.emit (node:events:365:28)
npm ERR! gyp ERR! stack     at Pipe.<anonymous> (node:net:661:12)
npm ERR! gyp ERR! System Windows_NT 10.0.19042
npm ERR! gyp ERR! command "C:\\Program Files (x86)\\nodejs\\node.exe" "D:\\www\\wegrow\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
npm ERR! gyp ERR! cwd D:\www\wegrow\node_modules\node-sass
npm ERR! gyp ERR! node -v v16.1.0
npm ERR! gyp ERR! node-gyp -v v3.8.0
npm ERR! gyp ERR! not ok
npm ERR! Build failed with error code: 1

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\wbalu\AppData\Local\npm-cache\_logs\2021-05-05T10_38_29_779Z-debug.log
Run Code Online (Sandbox Code Playgroud)

我已经格式化了我的电脑。之前一切正常。现在当我尝试安装它时,这就是弹出窗口。我试过重新安装 node.js,但没有帮助。我不知道我该怎么办。

gig*_*gnu 46

降级 Node.js 是一种选择,但我不喜欢仅仅因为一个包抛出错误就降级 Node.js 的想法。在我看来,找出哪个包导致错误然后修复它是一个更好的方法。

快速解决方案

在上线之后npm ERR! code 1,你应该能够看到npm ERR! path...。在我的例子中,路径表明 npm 包有问题node-sass:

npm ERR! code 1
npm ERR! path /home/gignu/GitHub/Movie-Subtitles/node_modules/node-sass
npm ERR! command failed
Run Code Online (Sandbox Code Playgroud)

现在删除这个 npm 包package.json并查看安装是否有效。如果有效,你就找到了罪魁祸首!就我而言,修复它所需要做的就是升级node-sass到最新版本。

// package.json with the outdated dependency

"node-sass": "^4.14.1",
Run Code Online (Sandbox Code Playgroud)
// package.json with the updated dependency

"node-sass": "^7.0.1",
Run Code Online (Sandbox Code Playgroud)

缓慢的解决方案

如果之前的解决方案不适合您,我会使用@Andrew Fair 的解决方案:

我取出了 package.json 文件中的整个依赖项部分,然后开始一次安装一个。

为此,只需复制整个dependencies部分devDependencies并将package.json其粘贴到文本编辑器中作为备份。然后删除所有依赖项并尝试一次添加回一个依赖项。如果有很多依赖项,您还可以一次添加回多个依赖项。每次运行npm i并查看是否抛出错误。一旦您发现哪个依赖项导致了错误,请尝试将该依赖项升级到较新的版本,然后运行npm i --force!

如果这不起作用,请尝试将损坏的 npm 包替换为另一个包,或者在其 GitHub 存储库中查找解决方案。


小智 11

尝试

npm cache clean --force
Run Code Online (Sandbox Code Playgroud)

删除文件夹node_modules和文件package-lock.json。

npm i
Run Code Online (Sandbox Code Playgroud)

  • stackoverflow cheat:搜索与 npm 相关的随机问题,建议这个。 (3认同)

小智 7

如果您的 Node 版本是最新的,请尝试降级。稳定版 14.16.1 有效。

  • 这对我来说绝对是个问题。我经历了很多麻烦,降级节点才有效。14.x 是目前推荐给大多数人的版本。Yarn 迫使我升级到 16.x。在自制程序中,您可以通过 `brew install node@14` `brew unlink node` `brew link node@14` 回到 14 或在它们之间切换。 (3认同)
  • 这也为我解决了这个问题。仅供参考,我强烈推荐节点版本管理器,以便在节点版本之间轻松安装/切换。这是一个简单的设置指南:https://www.freecodecamp.org/news/node-version-manager-nvm-install-guide/。 (3认同)
  • 感谢@AlejandroS,这在我的苹果硅场景中有效,使用brew如@Jake所示,但是我只是简单地为每个npm、npx、节点别名`alias npm14='/opt/homebrew/Cellar/node@14,而不是取消链接/链接/*/bin/npm'` 并使用这些作品,我确信全局 node_modules 路径会存在问题,我尚未解决。 (2认同)

小智 5

我也遇到了这个问题。查看我的设置后,我发现没有任何问题,并删除了缓存并删除了包锁,但仍然没有成功。

这是一个较旧的网站,我尝试使用更新等,但无济于事。

因此,我取出了package.json文件中的整个依赖项部分,然后开始一次安装一个。

有用!

显然,几乎所有版本都是重大更新,其更新量太大了。


abd*_*lla 5

当我尝试npm install在旧项目中运行该命令时,我遇到了同样的问题,我通过按照以下步骤将package.json中的依赖项更新到最新版本来解决该问题:

  1. 删除文件夹node_modules文件夹和文件package-lock.json

  2. 全局安装npm-check-updates,将所有包更新到新的主要版本

    跑步npm install -g npm-check-updates

  3. 运行以将package.jsonncu -u中的依赖项更新到最新版本

    注意:您可以使用npm update,但 npm update 不会更新到最新版本

  4. 跑步npm install