nodejs只是引入zerorpc就报错

Uncaught Error: The system cannot find message text for message number 0x%1 in the message file for %2.
\\?\E:\new\node_modules\zeromq\build\Release\zmq.node
    at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:172:20)
    at Object.Module._extensions..node (module.js:598:18)
    at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:172:20)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)
    at Module.require (module.js:513:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (E:\Python\electron-python-example-master\new\node_modules\zeromq\lib\index.js:6:11)
    at Object.<anonymous> (E:\Python\electron-python-example-master\new\node_modules\zeromq\lib\index.js:848:3)
阅读 4.1k
1 个回答

原因:
node\_modules\\zerorpc\\node\_modules\\zeromq\\lib\\index.js
的代码写的不够严谨,对于不同平台的路径支持不够好

具体情况是:

var EventEmitter = require('events').EventEmitter
  , zmq = require('../build/Release/zmq.node')
  , util = require('util');

中的:

zmq = require('../build/Release/zmq.node')

对于Linux/Mac是支持的。
但是对于Win是会出现上述错误的。

解决办法:

node\_modules\\zerorpc\\node\_modules\\zeromq\\lib\\index.js

var EventEmitter = require('events').EventEmitter
  , zmq = require('../build/Release/zmq.node')
  , util = require('util');

改为

var EventEmitter = require('events').EventEmitter

let path = require('path')
let zmqNodePath = path.join("..", "build", "Release", "zmq.node")
var zmq = require(zmqNodePath)

var util = require('util')

即可同时支持多种不同平台,正确加载 zmq.node 这个dll库。

详见我的帖子:
【已解决】windows中启动Electron-python报错:Uncaught Error A dynamic link library DLL initialization routine failed zerorpc  zeromq zmq.node

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏