【问题标题】:Unable to use leveldown package using Electron无法使用 Electron 使用 leveldown 包
【发布时间】:2019-06-12 14:44:29
【问题描述】:

当我尝试使用电子构建我的应用程序时,它在 leveldown 库中崩溃

Error: The module '/Users/macosx/Documents/Electron/node_modules/leveldown/build/Release/leveldown.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 64. This version of Node.js requires
NODE_MODULE_VERSION 67. Please try re-compiling or re-installing

我试过了

rm -rf node_modules/leveldown
npm install

npm rebuild leveldown--update-binary

npm uninstall leveldown

也试过了

我遇到了同样的问题,这里没有提到对我有用。这是>为我工作的:

在运行的 main.js 文件中需要您需要的所有依赖项 电子。 (这对我来说似乎是第一个重要的部分)运行 npm i -D electron-rebuild 添加 electron-rebuild 包 去掉 node-modules 文件夹,以及 packages-lock.json 文件。运行 npm 我 安装所有模块。运行 ./node_modules/.bin/electron-rebuild 到 重建一切运行很重要 ./node_modules/.bin/electron-rebuild 直接在 npm i 之后,否则它 无法在我的 Mac 上运行。

【问题讨论】:

    标签: node.js npm electron leveldown


    【解决方案1】:

    我为此苦苦挣扎了几天。诀窍是使用electron-rebuild 构建本机节点模块,并在您的webpack 配置中包含选项node.__dirname = true,因为降级bindings.js 取决于Node 提供的全局__dirname。

    【讨论】:

    • 非常感谢您的回复,但是您能否详细说明一下,您是只运行了 electron-rebuild 还是手动添加了 node.__dirname ?
    • 这个答案假设您的构建例程使用的是 webpack,如果是这样,您应该有一些文件,例如 webpack.base.config.js,其中包含 webpack 用于构建的参数。在这些文件中,会有一个node 部分,您需要在该嵌套对象中将_dirname 的值设置为true。完成此操作后,当您重新运行 electron-rebuild 时,它应该具有正确定义的(环境)__dirname 变量,这是 leveldown 构建过程所需的。
    • 感谢您的 __dirname 技巧!!!!谢谢谢谢谢谢!
    • 天哪,你救了我的命,我已经在网络最黑暗的角落搜索了几个小时以找到解决方案!
    猜你喜欢
    • 2020-06-21
    • 2018-02-19
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 2017-08-31
    • 2020-01-19
    • 2020-10-15
    • 2017-06-13
    相关资源
    最近更新 更多