我正在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连接到互联网时。当然我可以不复制这个特定的模块,但有没有办法避免这个错误呢?
答案 0 :(得分:1)
如果您在安装时没有互联网连接,那么唯一的方法是事先准备32位和64位node_modules。首次启动时,只需检查您的CPU并将node_modules
符号链接设为node_modules_64
或node_modules_32
。
答案 1 :(得分:1)
问题与复制无关,这是因为您尝试运行在32位版本下使用64位节点版本编译的软件包。
使用Ubuntu系统上相同的Node位编译软件包(可以在64位操作系统上安装32位节点),然后复制它们。