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

How to solve npm install error “npm ERR! code 1”

我正在尝试安装 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\_logs21-05-05T10_38_29_779Z-debug.log

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

试试看 npm install --python=python2.7。 它应该工作。 编辑:或者,--python=path to your python executable

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

尝试

npm cache clean --force

删除node_modules并打包-lock.json

npm i

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

这是一个较旧的网站,我尝试使用 update/etc 无济于事。

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

有效!

显然几乎所有的版本都是一个重大更新,后面的更新太多了。

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

快速解决方案

npm ERR! code 1 之后的行中,您应该可以看到 npm ERR! path...。在我的例子中,路径表明 node-sass npm 包有问题:

npm ERR! code 1
npm ERR! path /home/gignu/GitHub/Movie-Subtitles/node_modules/node-sass
npm ERR! command failed

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

// package.json with the outdated dependency

"node-sass": "^4.14.1",
// package.json with the updated dependency

"node-sass": "^7.0.1",

缓慢的解决方案

如果之前的解决方案对您不起作用,我会采用@Andrew Fair 的解决方案:

I took out the entire dependencies portion in my package.json file and just started working my way through installing one at a time.

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

如果这不起作用,请尝试用另一个替换坏的 npm 包或查看他们的 GitHub 存储库以获取解决方案。

升级后我遇到了同样的问题angular,所以我尝试了多个步骤来解决它。下面提到了一些步骤。

  1. 尝试删除 package-lock.json 文件和 node_module 文件夹,然后 运行
npm cache clean --force 

然后再次尝试 npm i 安装软件包,如果仍然无法正常工作,请检查步骤 2

  1. 检查 nodeJs 版本和 npm 版本是否兼容。在我的例子中,我使用的是 node v14.15.0 和 npm v8.1.6,所以我用下面的命令卸载了 npm 并再次安装了 node js 以使 node 和 npm 版本同步。
npm uninstall npm -g

这对我有用。

试试 cnpm,对我有用

npm install -g cnpm --registry=https://registry.npmmirror.com
cnpm install

当我尝试在旧项目中使用 运行 npm install 命令时,我遇到了同样的问题,我通过更新 package.json[= 中的依赖项解决了这个问题39=] 按照以下步骤升级到最新版本:

  1. 删除node_modulespackage-lock.json

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

    运行 npm install -g npm-check-updates

  3. 运行 ncu -u 更新 package.json 中的依赖到最新版本

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

  4. 运行 npm install

也许试试 yarn install。对我有用。