如何在64位系统上使用npm构建32位二进制文件?

16
我正在开发一款应用程序,计划使用 node-webkit 进行分发,但Windows上只有32位的二进制文件。我的操作系统是 Windows 7 Ultimate 64位版,因此npm正在构建protobuf for node 的64位二进制文件,而我使用的其中一个模块需要它作为前提条件。
我尝试过:
  • npm install protobuf --arch=ia32
  • npm install protobuf --target_arch=ia32
  • npm set npm_config_arch ia32
  • 安装32位版本的node和npm并使用它来安装protobuf
还有其他一些事情我现在想不起来了。
我该如何让npm构建32位二进制文件?我需要在32位机器上构建吗?
3个回答

17
你应该能够将repo克隆到node_modules中,然后使用以下命令手动编译。
node-gyp clean configure build --verbose --arch=ia32

在你克隆仓库的目录里面。


这个方法可行,尽管我的问题有些偏离 :( 我的问题不是32位二进制文件,而是其他方面的问题。我需要继续挖掘。 - Dr. McKay
2
半相关:如果您需要运行node-pre-gyp,则选项为--target_arch=ia32 - ZachB
请再解释一下:我应该在哪里运行这个命令?是在 node_modules 里面吗? - Gabriel Matusevich
在你克隆模块源代码的目录中 - 我已经修改了答案。 - asherkin
@asherkin,我需要针对armv7架构的wrtc软件包。我打算在Linux-64位PC上下载wrtc源代码并尝试。你的答案值得一试吗? - vgokul129

3
在您的项目根目录中添加一个名为.npmrc的文件。Windows资源管理器不允许创建以点开头的文件名,但可以通过Windows命令行来完成此操作,操作如下:
type NUL > .npmrc

接下来将以下行添加到文件中:

npm_config_arch=ia32

如果有些软件包想要使用未安装的版本,你可能还需要加入以下这行代码来强制使用特定版本的 Visual Studio 编译。如果你的 Visual Studio 版本不同于 2013(比如是 2012 等),请将下面的代码中的 2013 替换为你的版本号:

msvs_version=2013

3

尝试了asherkin和Derrick提供的建议,并建议以下操作

npm set npm_config_arch ia32
npm clean-install --arch=ia32

第一个命令是将项目/文件夹的节点环境设置为32位。 第二个命令是重新安装所有32位的包。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接