nodejs / node-gyp

Node.js native addon build tool

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

set npm_config_arch=ia32 not work in Windows build

stefanJi opened this issue · comments

  • Node Version: 16.14.0
  • Platform: Windows
  • Compiler: MSBuild
  • Module: @byted\douyinchat_addons (private repo)

npm install @byted\douyinchat_addons will run node-gyp rebuild, which is expected to use arch ia32 through set npm_config_arch=ia32 to rebuild, but the log finds that the x64 arch is still built.

Verbose output (from npm or node-gyp):
npm ERR! path D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons
npm ERR! command failed
npm ERR! command C:\Windows\system32\cmd.exe /d /s /c C:\Users\Admin\AppData\Local\Temp\install-c8ecb524.cmd
npm ERR! Warning: Missing input files:
npm ERR! D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\Release\imsdk.pdb
npm ERR! D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\Release\vesdk.pdb
npm ERR! 在此解决方案中一次生成一个项目。若要启用并行生成,请添加“-m”开关。
npm ERR!   imcppaddon.cc
npm ERR!   win_delay_load_hook.cc
npm ERR!     正在创建库 D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\Release\imsdk.lib 和对象 D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\Release\imsdk.exp
npm ERR! imcppaddon.obj : error LNK2001: 无法解析的外部符号 init [D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\imsdk.vcxproj]
npm ERR! imcppaddon.obj : error LNK2001: 无法解析的外部符号 call [D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\imsdk.vcxproj]
npm ERR! D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\Release\imsdk.node : fatal error LNK1120: 2 个无法解析的外部命令 [D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\imsdk.vcxproj]
npm ERR!   addon.cpp
npm ERR!   media_helper.cpp
npm ERR! D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\src\ve\media_helper.cpp(102,52): warning C4305: “=”: 从“double”到“float”截断 [D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\vesdk.vcxproj]
npm ERR!   win_delay_load_hook.cc
npm ERR!     正在创建库 D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\Release\vesdk.lib 和对象 D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\Release\vesdk.exp
npm ERR! media_helper.obj : error LNK2001: 无法解析的外部符号 __imp_vesdk_converter_set_progress_callback [D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\vesdk.vcxproj]
npm ERR! media_helper.obj : error LNK2001: 无法解析的外部符号 __imp_vesdk_converter_create [D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\vesdk.vcxproj]
npm ERR! media_helper.obj : error LNK2001: 无法解析的外部符号 __imp_vesdk_utils_get_thumbnail [D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\vesdk.vcxproj]
npm ERR! media_helper.obj : error LNK2001: 无法解析的外部符号 __imp_vesdk_utils_get_media_info [D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\vesdk.vcxproj]
npm ERR! media_helper.obj : error LNK2001: 无法解析的外部符号 __imp_vesdk_init [D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\vesdk.vcxproj]
npm ERR! media_helper.obj : error LNK2001: 无法解析的外部符号 __imp_vesdk_converter_cancel [D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\vesdk.vcxproj]
npm ERR! media_helper.obj : error LNK2001: 无法解析的外部符号 __imp_vesdk_converter_set_settings [D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\vesdk.vcxproj]
npm ERR! media_helper.obj : error LNK2001: 无法解析的外部符号 __imp_vesdk_converter_set_error_callback [D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\vesdk.vcxproj]
npm ERR! media_helper.obj : error LNK2001: 无法解析的外部符号 __imp_vesdk_converter_start [D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\vesdk.vcxproj]
npm ERR! media_helper.obj : error LNK2001: 无法解析的外部符号 __imp_vesdk_converter_can_convert [D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\vesdk.vcxproj]
npm ERR! media_helper.obj : error LNK2001: 无法解析的外部符号 __imp_vesdk_converter_destroy [D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\vesdk.vcxproj]
npm ERR! D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\Release\vesdk.node : fatal error LNK1120: 11 个无法解析的外部命令 [D:\workspace\online\builds\af5a9b6a\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons\build\vesdk.vcxproj]
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@9.3.0
npm ERR! gyp info using node@16.14.0 | win32 | x64

Does this work?
npm install --arch=ia32 @byted\douyinchat_addons

https://stackoverflow.com/questions/22448885


The LNK2001 errors make me think that we are trying to link ia32 code to non-ia32 libraries.
https://stackoverflow.com/questions/22876638

Does this work? npm install --arch=ia32 @byted\douyinchat_addons

https://stackoverflow.com/questions/22448885

Yes, it work

$ npm install --arch=ia32 @byted/douyinchat_addons --loglevel verbose
npm info it worked if it ends with ok
npm verb cli [
npm verb cli   'C:\\Program Files\\nodejs\\node.exe',
npm verb cli   'C:\\Users\\Tron_win_02\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js',
npm verb cli   'install',
npm verb cli   '--arch=ia32',
npm verb cli   '@byted/douyinchat_addons',
npm verb cli   '--loglevel',
npm verb cli   'verbose'
npm verb cli ]
npm info using npm@6.14.17
npm info using node@v14.19.2

> @byted/douyinchat_addons@1.0.16 install C:\workspace\online\builds\5b83c8d0\1\aweme_im\aweme-im-pc\node_modules\@byted\douyinchat_addons
> node-gyp rebuild

gyp info spawn args [
gyp info spawn args   'C:\\Users\\Tron_win_02\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\node-gyp\\gyp\\gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'msvs',
gyp info spawn args   '-I',
gyp info spawn args   'C:\\workspace\\online\\builds\\5b83c8d0\\1\\aweme_im\\aweme-im-pc\\node_modules\\@byted\\douyinchat_addons\\build\\config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   'C:\\Users\\Tron_win_02\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\node-gyp\\addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   'C:\\Users\\Tron_win_02\\AppData\\Local\\node-gyp\\Cache\\14.19.2\\include\\node\\common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=C:\\Users\\Tron_win_02\\AppData\\Local\\node-gyp\\Cache\\14.19.2',
gyp info spawn args   '-Dnode_gyp_dir=C:\\Users\\Tron_win_02\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\node-gyp',
gyp info spawn args   '-Dnode_lib_file=C:\\\\Users\\\\Tron_win_02\\\\AppData\\\\Local\\\\node-gyp\\\\Cache\\\\14.19.2\\\\<(target_arch)\\\\node.lib',
gyp info spawn args   '-Dmodule_root_dir=C:\\workspace\\online\\builds\\5b83c8d0\\1\\aweme_im\\aweme-im-pc\\node_modules\\@byted\\douyinchat_addons',
gyp info spawn args   '-Dnode_engine=v8',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'C:\\workspace\\online\\builds\\5b83c8d0\\1\\aweme_im\\aweme-im-pc\\node_modules\\@byted\\douyinchat_addons\\build',
gyp info spawn args   '-Goutput_dir=.'
gyp info spawn args ]

gyp verb command build []
gyp verb build type Release
gyp verb architecture ia32

Does this work? npm install --arch=ia32 @byted\douyinchat_addons

https://stackoverflow.com/questions/22448885

The LNK2001 errors make me think that we are trying to link ia32 code to non-ia32 libraries. https://stackoverflow.com/questions/22876638

This works, but set npm_config_arch=ia32 still doesn't work.

npm v9 removed a bunch of deprecated or invalid npm config options.

Given that you are running npm@6.14.17 you might try running npm doctor and fixing the issues it raises.