执行npm i时出现code 1错误(deasync模块)求解决方案
解决npm i时deasync模块因Python 3.12缺失distutils导致的code 1错误
问题背景
执行npm i时触发code 1错误,核心原因是Python 3.12.0缺失distutils模块,导致node-gyp编译deasync模块失败,具体报错信息如下:
npm ERR! code 1 npm ERR! path C:\Users\ufukc\Desktop\Aydin\work\aydin_tasarim\tekstil\node_modules\deasync npm ERR! command failed npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c node ./build.js npm ERR! gyp info it worked if it ends with ok npm ERR! gyp info using node-gyp@9.4.0 npm ERR! gyp info using node@20.9.0 | win32 | x64 npm ERR! gyp info find Python using Python version 3.12.0 found at "C:\Python312\python.exe" npm ERR! gyp info find VS using VS2019 (16.11.34114.132) found at: npm ERR! gyp info find VS "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools" npm ERR! gyp info find VS run with --verbose for detailed information npm ERR! gyp info spawn C:\Python312\python.exe npm ERR! gyp info spawn args [ npm ERR! gyp info spawn args 'C:\\Users\\ufukc\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\node-gyp\\gyp\\gyp_main.py', npm ERR! gyp info spawn args 'binding.gyp', npm ERR! gyp info spawn args '-f', npm ERR! gyp info spawn args 'msvs', npm ERR! gyp info spawn args '-I', npm ERR! gyp info spawn args 'C:\\Users\\ufukc\\Desktop\\Aydin\\work\\aydin_tasarim\\tekstil\\node_modules\\deasync\\build\\config.gypi', npm ERR! gyp info spawn args '-I', npm ERR! gyp info spawn args 'C:\\Users\\ufukc\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\node-gyp\\addon.gypi', npm ERR! gyp info spawn args '-I', npm ERR! gyp info spawn args 'C:\\Users\\ufukc\\AppData\\Local\\node-gyp\\Cache\\20.9.0\\include\\node\\common.gypi', npm ERR! gyp info spawn args '-Dlibrary=shared_library', npm ERR! gyp info spawn args '-Dvisibility=default', npm ERR! gyp info spawn args '-Dnode_root_dir=C:\\Users\\ufukc\\AppData\\Local\\node-gyp\\Cache\\20.9.0', npm ERR! gyp info spawn args '-Dnode_gyp_dir=C:\\Users\\ufukc\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\node-gyp', npm ERR! gyp info spawn args '-Dnode_lib_file=C:\\\\Users\\\\ufukc\\\\AppData\\\\Local\\\\node-gyp\\\\Cache\\\\20.9.0\\\\<(target_arch)\\\\node.lib', npm ERR! gyp info spawn args '-Dmodule_root_dir=C:\\Users\\ufukc\\Desktop\\Aydin\\work\\aydin_tasarim\\tekstil\\node_modules\\deasync', npm ERR! gyp info spawn args '-Dnode_engine=v8', npm ERR! gyp info spawn args '--depth=.', npm ERR! gyp info spawn args '--no-parallel', npm ERR! gyp info spawn args '--generator-output', npm ERR! gyp info spawn args 'C:\\Users\\ufukc\\Desktop\\Aydin\\work\\aydin_tasarim\\tekstil\\node_modules\\deasync\\build', npm ERR! gyp info spawn args '-Goutput_dir=.' npm ERR! gyp info spawn args ] npm ERR! Traceback (most recent call last): npm ERR! File "C:\Users\ufukc\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\gyp\gyp_main.py", line 42, in <module> npm ERR! import gyp # noqa: E402 npm ERR! ^^^^^^^^^^ npm ERR! File "C:\Users\ufukc\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 9, in <module> npm ERR! import gyp.input npm ERR! File "C:\Users\ufukc\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\input.py", line 19, in <module> npm ERR! from distutils.version import StrictVersion npm ERR! ModuleNotFoundError: No module named 'distutils' npm ERR! gyp ERR! configure error npm ERR! gyp ERR! stack Error: `gyp` failed with exit code: 1 npm ERR! gyp ERR! stack at ChildProcess.onCpExit (C:\Users\ufukc\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\lib\configure.js:325:16) npm ERR! gyp ERR! stack at ChildProcess.emit (node:events:514:28) npm ERR! gyp ERR! stack at ChildProcess._handle.onexit (node:internal/child_process:294:12) npm ERR! gyp ERR! System Windows_NT 10.0.23570 npm ERR! gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\ufukc\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" npm ERR! gyp ERR! cwd C:\Users\ufukc\Desktop\Aydin\work\aydin_tasarim\tekstil\node_modules\deasync npm ERR! gyp ERR! node -v v20.9.0 npm ERR! gyp ERR! node-gyp -v v9.4.0 npm ERR! gyp ERR! not ok npm ERR! Build failed
解决方案
- 安装distutils模块:Python 3.12起distutils不再默认预装,可通过两种方式安装:
- 打开Python 3.12的安装程序,选择「Modify」(修改),在「Optional Features」中勾选「Python distutils」,完成后续安装步骤
- 打开命令提示符,执行
pip install setuptools(distutils包含在setuptools包内)
- 验证安装:执行命令
python -c "import distutils; print('distutils installed')",无报错则说明安装成功 - 重新执行npm安装:删除项目目录下的
node_modules文件夹和package-lock.json文件,再运行npm i
内容的提问来源于stack exchange,提问作者muffuq
相关产品推荐
相关产品推荐

