如何在64位上为32位系统准备node.js模块?

时间:2017-08-18 10:31:40

标签: node.js ubuntu raspbian

我正在64位Ubuntu机器上开发一个node.js应用程序,我打算在运行Rasbpian的Raspberry Pi上运行。 Pi通常不连接到互联网,因此我手动将项目文件夹复制到其SD卡。我无法在那里运行应用程序,因为其中一个必需的模块epoll显然只适用于64位:

  

错误:/home/pi/bla/node_modules/epoll/build/Release/epoll.node:错误   ELF类:ELFCLASS64

     

at Object.Module._extensions..node(module.js:602:18)

     

在Module.load(module.js:507:32)的tryModuleLoad(module.js:470:12)

     

在Function.Module._load(module.js:462:3)

     

在Module.require(module.js:517:17)

     

at require(internal / module.js:11:18)

     

在绑定(/home/pi/bla/node_modules/bindings/bindings.js:76:44)

     

at Object。 (/home/pi/bla/node_modules/epoll/epoll.js:1:99)

     

在Module._compile(module.js:573:30)

     

at Object.Module._extensions..js(module.js:584:10)

这可以通过运行npm uninstall epoll然后npm install epoll来修复,但仅限于Pi连接到互联网时。当然我可以不复制这个特定的模块,但有没有办法避免这个错误呢?

2 个答案:

答案 0 :(得分:1)

如果您在安装时没有互联网连接,那么唯一的方法是事先准备32位和64位node_modules。首次启动时,只需检查您的CPU并将node_modules符号链接设为node_modules_64node_modules_32

答案 1 :(得分:1)

问题与复制无关,这是因为您尝试运行在32位版本下使用64位节点版本编译的软件包。

使用Ubuntu系统上相同的Node位编译软件包(可以在64位操作系统上安装32位节点),然后复制它们。