SPFx开发环境npm install执行失败求助
修复SPFx开发环境node-sass构建失败问题
问题背景
在未配置过SharePoint Framework(SPFx)开发环境的新电脑上,克隆代码后执行npm install时遭遇node-sass构建失败:node-gyp@3.8.0无法找到Python2,系统中已安装的Python3.11因语法兼容问题(print语句缺少括号)导致配置错误。
错误日志
npm ERR! code 1 npm ERR! path C:\Users\ls2527\OneDrive - SIMR\Desktop\helixpublicationsv2\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\nodejs\node.exe C:\Users\ls2527\OneDrive - Stowers Institute for Medical Research\Desktop\helixpublicationsv2\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\\nodejs\\node.exe', npm ERR! gyp verb cli 'C:\\Users\\ls2527\\OneDrive - SIMR\\Desktop\\helixpublicationsv2\\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@18.14.2 | win32 | x64 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 (C:\Users\ls2527\OneDrive - SIMR\Desktop\helixpublicationsv2\node_modules\which\which.js:13:12) npm ERR! gyp verb `which` failed at F (C:\Users\ls2527\OneDrive - SIMR\Desktop\helixpublicationsv2\node_modules\which\which.js:68:19) npm ERR! gyp verb `which` failed at E (C:\Users\ls2527\OneDrive - SIMR\Desktop\helixpublicationsv2\node_modules\which\which.js:80:29) npm ERR! gyp verb `which` failed at C:\Users\ls2527\OneDrive - SIMR\Desktop\helixpublicationsv2\node_modules\which\which.js:89:16) npm ERR! gyp verb `which` failed at C:\Users\ls2527\OneDrive - SIMR\Desktop\helixpublicationsv2\node_modules\isexe\index.js:42:5) npm ERR! gyp verb `which` failed at C:\Users\ls2527\OneDrive - SIMR\Desktop\helixpublicationsv2\node_modules\isexe\windows.js:36:5) npm ERR! gyp verb `which` failed at FSReqCallback.oncomplete (node:fs:207:21) npm ERR! gyp verb `which` failed python2 Error: not found: python2 npm ERR! gyp verb `which` failed at getNotFoundError (C:\Users\ls2527\OneDrive - SIMR\Desktop\helixpublicationsv2\node_modules\which\which.js:13:12) npm ERR! gyp verb `which` failed at F (C:\Users\ls2527\OneDrive - SIMR\Desktop\helixpublicationsv2\node_modules\which\which.js:68:19) npm ERR! gyp verb `which` failed at E (C:\Users\ls2527\OneDrive - SIMR\Desktop\helixpublicationsv2\node_modules\which\which.js:80:29) npm ERR! gyp verb `which` failed at C:\Users\ls2527\OneDrive - SIMR\Desktop\helixpublicationsv2\node_modules\which\which.js:89:16) npm ERR! gyp verb `which` failed at C:\Users\ls2527\OneDrive - SIMR\Desktop\helixpublicationsv2\node_modules\isexe\index.js:42:5) npm ERR! gyp verb `which` failed at C:\Users\ls2527\OneDrive - SIMR\Desktop\helixpublicationsv2\node_modules\isexe\windows.js:36:5) npm ERR! gyp verb `which` failed at FSReqCallback.oncomplete (node:fs:207: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:\Python311\python.EXE npm ERR! gyp ERR! configure error npm ERR! gyp ERR! stack Error: Command failed: C:\Python311\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: Missing parentheses in call to 'print'. Did you mean print(...)? npm ERR! gyp ERR! stack npm ERR! gyp ERR! stack at ChildProcess.exithandler (node:child_process:419:12) npm ERR! gyp ERR! stack at ChildProcess.emit (node:events:513:28) npm ERR! gyp ERR! stack at maybeClose (node:internal/child_process:1091:16) npm ERR! gyp ERR! stack at ChildProcess._handle.onexit (node:internal/child_process:302:5) npm ERR! gyp ERR! System Windows_NT 10.0.22621 npm ERR! gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\ls2527\\OneDrive - SIMR\\Desktop\\helixpublicationsv2\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library=" npm ERR! gyp ERR! cwd C:\Users\ls2527\OneDrive - SIMR\Desktop\helixpublicationsv2\node_modules\node-sass npm ERR! gyp ERR! node -v v18.14.2 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\ls2527\AppData\Local\npm-cache\_logs\2023-03-03T22_36_29_981Z-debug-0.log
解决方案
方案一:安装Python 2.7并配置环境变量
- 下载Python 2.7版本,安装时勾选「Add Python to PATH」选项。
- 若安装时未勾选,手动将Python 2.7的安装路径(如
C:\Python27)添加到系统环境变量PATH中。 - 打开新的命令提示符,执行
python --version确认显示Python 2.7.x版本。 - 重新执行
npm install。
方案二:通过npm配置指定Python版本
- 打开命令提示符,执行以下命令指定node-gyp使用的Python路径:
npm config set python C:\Python27\python.exe - 重新执行
npm install。
方案三:升级node-gyp版本(推荐,摆脱Python2依赖)
- 删除项目下的
node_modules文件夹和package-lock.json文件。 - 执行命令更新全局node-gyp:
npm install -g node-gyp@latest - 重新执行
npm install。
方案四:替换node-sass为dart-sass(长期解决方案)
- 卸载项目中的node-sass:
npm uninstall node-sass - 安装dart-sass:
npm install sass --save-dev - 修改项目中所有引用
node-sass的配置(如webpack配置、gulp任务等),替换为sass。 - 重新执行
npm install。
内容的提问来源于stack exchange,提问作者Lindsay Shelton
相关产品推荐
相关产品推荐

