我有一个使用node.js运行的应用程序 - 为了解决特定的错误,我有一个自定义版本的 Node (不是系统默认安装),我想用它来运行我的应用程序。所以在我的启动脚本中我更改:
#!/usr/bin/env node
至
#!/Users/cmlacy/Dropbox/Engine/code/node-v0.8.9/out/Release/node
当我运行应用程序时,我收到了一系列更改之前未收到的错误:
crispin:node cmlacy$ ./engine.js
dyld: lazy symbol binding failed: Symbol not found: __ZN2v816FunctionTemplate3NewEPFNS_6HandleINS_5ValueEEERKNS_9ArgumentsEES3_NS1_INS_9SignatureEEE
Referenced from: /Users/cmlacy/Dropbox/Engine/code/Engine-Developer/node/node_modules/mongodb/node_modules/bson/build/Release/bson.node
Expected in: dynamic lookup
dyld: Symbol not found: __ZN2v816FunctionTemplate3NewEPFNS_6HandleINS_5ValueEEERKNS_9ArgumentsEES3_NS1_INS_9SignatureEEE
Referenced from: /Users/cmlacy/Dropbox/Engine/code/Engine-Developer/node/node_modules/mongodb/node_modules/bson/build/Release/bson.node
Expected in: dynamic lookup
Trace/BPT trap: 5
我假设这是因为 node_modules 中的某些依赖项是针对错误的 Node 库进行编译的 - 如何更改 npm install
期间包含在编译中的 Node 版本?
最佳答案
确保您的特定 Node 版本位于 shell 中系统 Node 之前的路径中。这样就可以了(当然还要清除所有旧的 node_modules 构建目录)。
关于node.js - 我可以在 'npm install' 中设置 npm 使用的编译库路径吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16243301/