3

我想安装 webpack 时遇到很多错误。我的节点版本是:v14.17.0 版本的 npm:7.13.0 我在 windows 10 上

以下是错误:

npm ERR! code 1
npm ERR! path D:\LocalSites\fundraise-better\app\public\wp-content\themes\fundraisebetter\node_modules\fibers
npm ERR! command failed
npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c node build.js || nodejs build.js
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@3.8.0
npm ERR! gyp info using node@14.17.0 | win32 | ia32
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 (child_process.js:319:12)
npm ERR! gyp ERR! stack     at ChildProcess.emit (events.js:376:20)
npm ERR! gyp ERR! stack     at maybeClose (internal/child_process.js:1055:16)
npm ERR! gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5)
npm ERR! gyp ERR! System Windows_NT 10.0.19041
npm ERR! gyp ERR! command "C:\\Program Files (x86)\\nodejs\\node.exe" "D:\\LocalSites\\fundraise-better\\app\\public\\wp-content\\themes\\fundraisebetter\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--release"
npm ERR! gyp ERR! cwd D:\LocalSites\fundraise-better\app\public\wp-content\themes\fundraisebetter\node_modules\fibers
npm ERR! gyp ERR! node -v v14.17.0
npm ERR! gyp ERR! node-gyp -v v3.8.0
npm ERR! gyp ERR! not ok
npm ERR! node-gyp exited with code: 1
npm ERR! Please make sure you are using a supported platform and node version. If you
npm ERR! would like to compile fibers on this machine please make sure you have setup your
npm ERR! build environment--
npm ERR! Windows + OS X instructions here: https://github.com/nodejs/node-gyp
npm ERR! Ubuntu users please run: `sudo apt-get install g++ build-essential`
npm ERR! RHEL users please run: `yum install gcc-c++` and `yum groupinstall 'Development Tools'`
npm ERR! Alpine users please run: `sudo apk add python make g++`
npm ERR! 'nodejs' is not recognized as an internal or external command,
npm ERR! operable program or batch file.
npm timing npm Completed in 240044ms
4

3 回答 3

2

问题是本机模块问题!这是一个普遍的问题!

机模块绑定机程序和二进制文件的模块!例如一个 c++ 项目!因此需要项目构建和编译!对于这个大多数包使用node-gyp

问题很简单!您的环境缺少必要的构建和编译工具时遇到问题!

如果你仔细检查错误信息!都说了!

npm 错误!请确保您使用的是受支持的平台和节点版本。如果你
npm 错误!想在这台机器上编译纤程请确保你已经设置了你的构建环境
——npm ERR!此处的Windows + OS X 说明https
://github.com/nodejs/node-gyp npm ERR!Ubuntu 用户请运行:sudo apt-get install g++ build-essential
npm ERR!RHEL 用户请运行:yum install gcc-c++yum groupinstall 'Development Tools'
npm ERR!高山用户请运行sudo apk add python make g++

所以要看你是什么平台Linux、macOS 或 Windows!按照上面的说明!

您可以简单地查看https://github.com/nodejs/node-gyp以查看不同的说明!

所有平台都需要Python!(Node-gyp 大量使用 python 这就是为什么)

在此处输入图像描述

在linux中使用gcc!(检查上面的消息错误!用于说明)


debian based: sudo apt-get install g++ build-essential,
Redhat and fedora: yum install gcc-c++and yum groupinstall 'Development Tools'
Any other detribution search for the equivalent!我从来没有在linux中遇到过这样的问题!因为大多数发行版都有!

在 Windows Visual Studio 中需要构建工具

https://github.com/nodejs/node-gyp#on-windows

在 macos中使用了 clang!而且xcode需要有clang!

https://github.com/nodejs/node-gyp#on-macos

检查 node-gyp 文档!

文档中的步骤

在 macOS 上

注意:如果您的 Mac 已升级到 macOS Catalina (10.15),请阅读 macOS_Catalina.md。

  • Python v3.6、v3.7、v3.8 或 v3.9
  • Xcode
    您还需要通过运行 xcode-select --install 来安装 XCode 命令行工具。或者,如果您已经安装了完整的 Xcode,您可以在菜单 Xcode -> Open Developer Tool -> More Developer Tools...下找到它们。这一步将安装 clang、clang++ 和 make。

在 Windows 上

从 Microsoft Store 包安装当前版本的 Python。

手动安装工具和配置:

安装 Visual C++ 构建环境:Visual Studio 构建工具(使用“Visual C++ 构建工具”工作负载)或Visual Studio 社区(使用“使用 C++ 进行桌面开发”工作负载)启动 cmd,

npm config set msvs_version 2017

大重要!

如果上述步骤对您不起作用,请访问Microsoft 的 Windows Node.js 指南以获取更多提示。

要在 ARM 上以 Windows 10 上的本机 ARM64 Node.js 为目标,请添加组件“Visual C++ compilers and libraries for ARM64”和“Visual C++ ATL for ARM64”。

从上面的链接下载构建工具安装程序后!或从此处的下载页面

在此处输入图像描述

工具是这样的

在此处输入图像描述

您也可以查看 vscode 文档以了解 c++:https ://code.visualstudio.com/docs/cpp/config-msvc

所需要的只是安装 c++ 构建工具!和正确的元素!

您也可以在没有 Visual Studio 的情况下检查为 python 安装 MS C++ 14.0 以获得额外的意义!

和简单的工具

在 Windows 上,这篇文章既提供了很好的解释,又提供了一种简单的设置方法

https://spin.atomicobject.com/2018/06/18/windows-node-js/

编译扩展 我们没有任何需要在我们的项目中构建的扩展,但是我们的一些依赖项(即 node-sass)有。

像这样的扩展是用 node-gyp 构建的,而node-gyp 需要两个东西:Python(2…wince)和一个 C 编译器它们都不是 Windows 系统上的标准设备如果您没有它们并且需要它们来构建扩展,您将看到一长串 gyp ERR!安装依赖项时的消息。

值得庆幸的是,有一种相当简单的方法可以安装 已经为 node-gyp 配置的它们:windows-build-tools

在你安装了上面的Scoop nodejs 包之后,假设你安装了 Sudo,你现在可以运行:

sudo npm install --global --production windows-build-tools

(如果您还没有使用scoop package 命令方式!那么只需删除 sudo 并在具有管理员权限的控制台上运行它

请注意,我们观察到这些安装程序至少重新启动了一次系统,这实际上中止了该过程。在这种情况下,我们通过重新运行安装程序来解决此问题,如下所示:

sudo npm 卸载 --global windows-build-tools
sudo npm install --global --production windows-build-tools

来自windows-build-tools文档

在 Windows 上?想要编译原生 Node 模块?使用此单线安装构建工具。以管理员身份启动PowerShell并运行:

npm install --global windows-build-tools

在此处输入图像描述

安装后,npm 会自动执行该模块,下载并安装 Visual C++ Build Tools,微软为大部分用户免费提供(作为 Visual Studio 社区的一部分,请查阅许可证以确定您是否符合条件) . 这些工具是编译流行的本机模块所必需的。如果尚未安装,它还将安装 Python 3.8,适当地配置您的机器和 npm。

||| [仅适用于 Windows Vista / 7] 需要 .NET Framework 4.5.1(此软件包当前未自动安装)

两种安装都没有冲突,这意味着它们不会与 Visual Studio、C++ 构建工具或 Python 的现有安装混淆。如果您看到任何其他指示,请提交错误。

对比 2017 或 2015

该模块能够安装 Visual Studio 2017 或 Visual Studio 2015 的构建工具。

默认情况下,此工具将安装 2017 构建工具。要更改它,请使用 --vs2015 参数运行此脚本。

VS 2019

正如node-gyp doc!并指导!他们建议与 2017 年相比

启动 cmd,npm 配置设置 msvs_version 2017

大多数软件包使用 vs 2015 或 2017!2017应该好好干!如果你因为某种原因遇到任何问题!安装它们!

此外,如果在任何时间和任何原因都需要 VS 2019!可以采用上述手动方式!

并使用npm config set msvs_version 2019

可以随时使用它进行版本更改!说到 npm!

好吧,这是您可能永远不需要关心的事情!但以防万一!

带有可能有复杂性的本机模块的软件包!通常他们会说明如何使用构建工具!如果有的话!

于 2021-05-28T14:14:56.203 回答
0

试试管理员模式

npm install --global windows-build-tools
于 2021-05-28T15:09:05.820 回答
0

我终于解决了这个问题。node-gyp 已安装在我的机器上,但仍然无法正常工作。最后运行这个命令解决了这个问题:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

于 2021-05-31T13:34:28.467 回答