当使用本机插件复制项目到服务器机器时,“指定的模块找不到”
我创build了一个本地插件节点,一个64位DLL,用/clr
标志编译访问另一个.net dll。
所有在我的开发框(Windows 7,64位)上很好地工作,但是当整个目录复制到服务器框(Windows Server 2008 R2,64位,.net 4.0客户端configuration文件和扩展安装),一个
var myaddon = require('./build/Release/myaddon');
产生以下错误:
module.js:485 process.dlopen(filename, module.exports); ^ Error: The specified module could not be found. C:\Users\x\build\Release\myaddon.node at Object.Module._extensions..node (module.js:485:11) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:362:17) at require (module.js:378:17)
我知道它成功地find了文件'myaddon.node',因为当我稍微改变require语句来指向一个不存在的文件时,它会抱怨一个不同的错误信息。
没有我的要求声明,节点启动罚款。
为什么错误以及如何解决?
从头开始一个插件为debugging目的没有/clr
– 哪些工作正常 – 我想通了。
- 设置'/ clr'标志强制你改变'/ MT'(运行库的静态链接)到'/ MD'(rt库的dynamic链接)
- dynamic链接意味着C ++ dll需要安装在目标机器上
在我的情况下,这意味着在服务器上安装Microsoft Visual C ++ 2010 SP1可再发行组件包(x64) 。