突然,在我的一个Jenkins环境中,构建开始失败,而在本地机器上,它似乎工作得很好,因为我已经安装了Python,
当我通过访问this研究node-gyp时,我发现问题出在内部依赖上,即node-sass v3.8.0中的node-gyp v3.5.0,找到了需要安装Python的前提条件。
所以我的问题是,我可以安装什么版本的node-sass来绕过这一点,或者有没有更好的解决方案,因为我的构建直到今天早上还在相同的环境中运行得很好。
节点v5.10.1
错误日志
gyp verb check python checking for Python executable "python2" in the PATH
gyp verb `which` failed Error: not found: python2
gyp verb `which` failed at getNotFoundError (C:Program Files (x86)JenkinsjobsNdbSite-hot-fix-Manual-PreBuildworkspacesrcNdbSite.UInode_moduleswhichwhich.js:13:12)
gyp verb `which` failed at F (C:Program Files (x86)JenkinsjobsNdbSite-hot-fix-Manual-PreBuildworkspacesrcNdbSite.UInode_moduleswhichwhich.js:68:19)
gyp verb `which` failed at E (C:Program Files (x86)JenkinsjobsNdbSite-hot-fix-Manual-PreBuildworkspacesrcNdbSite.UInode_moduleswhichwhich.js:80:29)
gyp verb `which` failed at C:Program Files (x86)JenkinsjobsNdbSite-hot-fix-Manual-PreBuildworkspacesrcNdbSite.UInode_moduleswhichwhich.js:89:16
gyp verb `which` failed at C:Program Files (x86)JenkinsjobsNdbSite-hot-fix-Manual-PreBuildworkspacesrcNdbSite.UInode_modulesisexeindex.js:44:5
gyp verb `which` failed at C:Program Files (x86)JenkinsjobsNdbSite-hot-fix-Manual-PreBuildworkspacesrcNdbSite.UInode_modulesisexewindows.js:29:5
gyp verb `which` failed at FSReqWrap.oncomplete (fs.js:82:15)
gyp verb `which` failed python2 { [Error: not found: python2] code: 'ENOENT' }
gyp verb check python checking for Python executable "python" in the PATH
gyp verb `which` failed Error: not found: python
gyp verb `which` failed at getNotFoundError (C:Program Files (x86)JenkinsjobsNdbSite-hot-fix-Manual-PreBuildworkspacesrcNdbSite.UInode_moduleswhichwhich.js:13:12)
gyp verb `which` failed at F (C:Program Files (x86)JenkinsjobsNdbSite-hot-fix-Manual-PreBuildworkspacesrcNdbSite.UInode_moduleswhichwhich.js:68:19)
gyp verb `which` failed at E (C:Program Files (x86)JenkinsjobsNdbSite-hot-fix-Manual-PreBuildworkspacesrcNdbSite.UInode_moduleswhichwhich.js:80:29)
gyp verb `which` failed at C:Program Files (x86)JenkinsjobsNdbSite-hot-fix-Manual-PreBuildworkspacesrcNdbSite.UInode_moduleswhichwhich.js:89:16
gyp verb `which` failed at C:Program Files (x86)JenkinsjobsNdbSite-hot-fix-Manual-PreBuildworkspacesrcNdbSite.UInode_modulesisexeindex.js:44:5
gyp verb `which` failed at C:Program Files (x86)JenkinsjobsNdbSite-hot-fix-Manual-PreBuildworkspacesrcNdbSite.UInode_modulesisexewindows.js:29:5
gyp verb `which` failed at FSReqWrap.oncomplete (fs.js:82:15)
gyp verb `which` failed python { [Error: not found: python] code: 'ENOENT' }
gyp verb could not find "python". checking python launcher
gyp verb could not find "python". guessing location
gyp verb ensuring that file exists: C:Python27python.exe
gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
gyp ERR! stack at Object.failNoPython (C:Program Files (x86)JenkinsjobsNdbSite-hot-fix-Manual-PreBuildworkspacesrcNdbSite.UInode_modulesnode-gyplibconfigure.js:454:19)
gyp ERR! stack at Object.<anonymous> (C:Program Files (x86)JenkinsjobsNdbSite-hot-fix-Manual-PreBuildworkspacesrcNdbSite.UInode_modulesnode-gyplibconfigure.js:480:16)
gyp ERR! stack at C:Program Files (x86)JenkinsjobsNdbSite-hot-fix-Manual-PreBuildworkspacesrcNdbSite.UInode_modulesgraceful-fspolyfills.js:284:29
gyp ERR! stack at FSReqWrap.oncomplete (fs.js:82:15)
gyp ERR! System Windows_NT 6.3.9600
gyp ERR! command "C:\Program Files\nodejs\node.exe" "C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\node-gyp\bin\node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd C:Program Files (x86)JenkinsjobsNdbSite-hot-fix-Manual-PreBuildworkspacesrcNdbSite.UInode_modulesnode-sass
gyp ERR! node -v v5.10.1
gyp ERR! node-gyp -v v3.5.0
gyp ERR! not ok
Build failed
如有任何想法,我们将不胜感激,谢谢。
30条答案
按热度按时间1yjd4xko1#
以下是帮助我在基于旧的
node-gyp v3.8.0
运行项目时防止错误Error: not found: python2
的方法。1.运行
npm install --global --production windows-build-tools@4.0.0
1.将
%USERPROFILE%\.windows-build-tools\python27
中的python.exe
重命名为python2.exe
1.确保
%USERPROFILE%\.windows-build-tools\python27
是您的PATH
环境变量的一部分(这是windows-build-tools
应该已经为您做的事情)1.下载Visual Studio 2017 Build Tools
1.告诉
npm
与npm config set msvs_version 2017
一起使用VS 20171.运行使用
node-gyp
的脚本(node-gyp
现在将找到python2.exe
)替代方案:强制升级node-gyp
您还可以尝试将项目升级为使用node-gyp v8.0.0而不是node-gyp v3.8.0。在这种情况下,将以下
resolution
条目添加到package.json
:之后,请确保您安装了Python3以及Visual Studio 2017构建工具和/或Visual Studio 2019构建工具。您还可以运行
npm config delete msvs_version
,让node-gyp
自动检测您的VS版本。测试对象为:
polhcujo2#
我使用的是Windows 11,我曾尝试使用
npm i -g windows-build-tools
,但它永远不能使用。所以,对我起作用的是:1.从here安装Visual Studio生成工具2017。
1.安装完成后,以管理员身份打开PowerShell。
1.输入命令:
npm install --global --production windows-build-tools --vs2015
1.稍后再感谢我!
它修复了Windows11上与为我构建工具相关的所有错误。
ukdjmx9f3#
使用NPM 6.14.12降级到Node 10.24.1版本对我来说很管用。以及使用安装windows生成工具
Npm i-g窗口-构建-工具
xxls0lw84#
这也是我几天前面临的问题。相信我,他们不需要在您的项目或系统中安装或卸载其他依赖项。
我是如何解决这个问题的,让我分享一下我的经验。
另一种可能的解决方案:
请检查您的Package.json文件。如果optionalDepers对象内存在node-sass元素,则需要以这种方式运行npm命令
npm install --no-optional
;或者,如果只是从optionalDepedency对象中删除node-sass元素,则需要运行npm命令enter image description here请查看这个Package.json文件的屏幕截图
zdwk9cvp5#
如果您使用的是Visual Studio。按照以下步骤操作:
wdebmtf26#
您也可以尝试使用sass模块而不是node-sass:
b91juud37#
Windows11机器的一个简单解决方案是,
jdgnovmf8#
在我的例子中,我在机器上安装了节点版本
v16
,但是Reaction项目使用的是node-sass版本v4.x.x
,用node-sass版本更新Package.json到v6.0.1
解决了这个问题。可以从NPM官方页面https://www.npmjs.com/package/node-sass查看对node-sass的节点版本支持
wlsrxk519#
我在Windows 10上发现了节点12.19.0和Yarn1.22.5同样的问题。我修复了这个问题,我安装了最新的稳定的64位Python64位,并在安装时添加了环境变量的路径。在安装了python之后,我重新启动了机器以获取env vars。
wlwcrazw10#
Python2的维护状态是**“生命周期结束”**,所以在新的ubuntu版本中默认不安装它。
安装最新的python2.7对我来说很好。
以下是安装它的说明:
打开一个新的终端并在
npm install
中尝试yqkkidmi11#
在YAR项目的情况下,忽略节点版本,并使用“YAR INSTALL--Ignore-Engines”将安装任何node-sass v,而不会出现这些python错误
7uzetpgm12#
在看了所有的答案后,我注意到这个解决方案可能非常有帮助。它解释了安装node-sass时的how to configure "npm" to find your installed python version。请记住,node-sass需要node-gyp(一种NPM构建工具)来查找您的python路径。或者只需安装Python,并遵循(在链接中)给出的相同解决方案。谢谢。
2guxujil13#
我们在2021年设置新的TeamCity构建代理时遇到了这个问题。最初,我们使用巧克力安装NodeJS。我们重新安装,返回到原始安装程序
node-v12.12.0-x64.msi
。安装程序对话框中的第三个屏幕提供了安装编译本机模块所需的工具:在这样做之后,我们的问题就解决了。
l7wslrjt14#
在我的PC上安装不同版本的PYTHON时,我也遇到了同样的问题。只需将node升级到最新版本v8.11.2和NPM 5.6.0,然后安装node-sass@4.5.3,就可以了。
3z6pesqy15#
在2022年为我工作,实际上我们可以安装到
npm
的python2.7之后,我们可以使用python 2.7
强制运行npm install
沙司
1.
npm install --global windows-build-tools --save
1.
npm install --python=python2.7