报错
进行依赖下载时,针对node-gyp的invalid mode: 'rU' while trying to load binding.gyp
报错。
例如以下这种:
npm ERR! code 1
npm ERR! path /Users/tum/Desktop/nx-pricing-sample/node_modules/@parcel/watcher
npm ERR! command failed
npm ERR! command sh -c -- node-gyp-build
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@7.1.2
npm ERR! gyp info using node@16.19.0 | darwin | arm64
npm ERR! gyp info find Python using Python version 3.12.0 found at "/Library/Frameworks/Python.framework/Versions/3.12/bin/python3"
npm ERR! (node:2058) \[DEP0150\] DeprecationWarning: Setting process.config is deprecated. In the future the property will be read-only.
npm ERR! (Use `node --trace-deprecation ...` to show where the warning was created)
npm ERR! gyp info spawn /Library/Frameworks/Python.framework/Versions/3.12/bin/python3
npm ERR! gyp info spawn args \[
npm ERR! gyp info spawn args '/Users/tum/Desktop/nx-pricing-sample/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 'make',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args '/Users/tum/Desktop/nx-pricing-sample/node_modules/@parcel/watcher/build/config.gypi',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args '/Users/tum/Desktop/nx-pricing-sample/node_modules/node-gyp/addon.gypi',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args '/Users/tum/Library/Caches/node-gyp/16.19.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=/Users/tum/Library/Caches/node-gyp/16.19.0',
npm ERR! gyp info spawn args '-Dnode_gyp_dir=/Users/tum/Desktop/nx-pricing-sample/node_modules/node-gyp',
npm ERR! gyp info spawn args '-Dnode_lib_file=/Users/tum/Library/Caches/node-gyp/16.19.0/\<(target_arch)/node.lib',
npm ERR! gyp info spawn args '-Dmodule_root_dir=/Users/tum/Desktop/nx-pricing-sample/node_modules/@parcel/watcher',
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 '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 "/Users/tum/Desktop/nx-pricing-sample/node_modules/node-gyp/gyp/gyp_main.py", line 51, in \<module\>
npm ERR! sys.exit(gyp.script_main())
npm ERR! ^^^^^^^^^^^^^^^^^
npm ERR! File "/Users/tum/Desktop/nx-pricing-sample/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 670, in script_main
npm ERR! return main(sys.argv\[1:\])
npm ERR! ^^^^^^^^^^^^^^^^^^
npm ERR! File "/Users/tum/Desktop/nx-pricing-sample/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 662, in main
npm ERR! return gyp_main(args)
npm ERR! ^^^^^^^^^^^^^^
npm ERR! File "/Users/tum/Desktop/nx-pricing-sample/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 629, in gyp_main
npm ERR! \[generator, flat_list, targets, data\] = Load(
npm ERR! ^^^^^
npm ERR! File "/Users/tum/Desktop/nx-pricing-sample/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 150, in Load
npm ERR! result = gyp.input.Load(
npm ERR! ^^^^^^^^^^^^^^^
npm ERR! File "/Users/tum/Desktop/nx-pricing-sample/node_modules/node-gyp/gyp/pylib/gyp/input.py", line 3021, in Load
npm ERR! LoadTargetBuildFile(
npm ERR! File "/Users/tum/Desktop/nx-pricing-sample/node_modules/node-gyp/gyp/pylib/gyp/input.py", line 411, in LoadTargetBuildFile
npm ERR! build_file_data = LoadOneBuildFile(
npm ERR! ^^^^^^^^^^^^^^^^^
npm ERR! File "/Users/tum/Desktop/nx-pricing-sample/node_modules/node-gyp/gyp/pylib/gyp/input.py", line 239, in LoadOneBuildFile
npm ERR! build_file_contents = open(build_file_path, "rU").read()
npm ERR! ^^^^^^^^^^^^^^^^^^^^^^^^^^^
npm ERR! ValueError: invalid mode: 'rU' while trying to load binding.gyp
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 (/Users/tum/Desktop/nx-pricing-sample/node_modules/node-gyp/lib/configure.js:351:16)
npm ERR! gyp ERR! stack at ChildProcess.emit (node:events:513:28)
npm ERR! gyp ERR! stack at Process.ChildProcess.\_handle.onexit (node:internal/child_process:293:12)
npm ERR! gyp ERR! System Darwin 22.1.0
npm ERR! gyp ERR! command "/Users/tum/.nvm/versions/node/v16.19.0/bin/node" "/Users/tum/Desktop/nx-pricing-sample/node_modules/.bin/node-gyp" "rebuild"
npm ERR! gyp ERR! cwd /Users/tum/Desktop/nx-pricing-sample/node_modules/@parcel/watcher
npm ERR! gyp ERR! node -v v16.19.0
npm ERR! gyp ERR! node-gyp -v v7.1.2
npm ERR! gyp ERR! not ok
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/tum/.npm/\_logs/2022-12-17T06_03_21_928Z-debug-0.log
原因:
U模式已被弃用一段时间,最终在Python 3.11中被删除。不幸的是,gyp仍然使用此模式,因此与Python 3.1 0不兼容(请参见README)。
解决办法:
降级到Python3.1 0应该可以解决问题。