Skip to content

报错

进行依赖下载时,针对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应该可以解决问题。