【发布时间】:2022-01-06 00:00:40
【问题描述】:
我为我的 Electron 应用程序构建了一个名为 foo 的 C++ 原生模块。该模块位于我的项目根目录中。我通过设置本地路径将项目添加到我的package.json - 这是here 支持和描述的功能。
"dependencies": {
"thumbnail": "file:./foo",
当我在我的 Electron 应用程序中执行 npm i 时,所有本机模块都被编译并且我自己的模块吐出一个 my-electron-app/foo/build/Release/foo.node 二进制文件。但是通过 require("foo") 在我的 Electron 应用程序中“导入”模块失败,我收到以下错误:
vendor.js:40750 Uncaught Error: Could not locate the bindings file. Tried:
→ my-electron-app\build\foo.node
→ my-electron-app\build\Debug\foo.node
→ my-electron-app\build\Release\foo.node
→ my-electron-app\out\Debug\foo.node
→ my-electron-app\Debug\foo.node
→ my-electron-app\out\Release\foo.node
→ my-electron-app\Release\foo.node
→ my-electron-app\build\default\foo.node
→ my-electron-app\compiled\12.13.0\win32\x64\foo.node
→ my-electron-app\addon-build\release\install-root\foo.node
→ my-electron-app\addon-build\debug\install-root\foo.node
→ my-electron-app\addon-build\default\install-root\foo.node
→ my-electron-app\lib\binding\node-v76-win32-x64\foo.node
at bindings (vendor.js:40750)
at Object.1YQR (main.js:679)
at __webpack_require__ (runtime.js:85)
at Object.Iz1V (main.js:9075)
at __webpack_require__ (runtime.js:85)
at Object.4qKS (main.js:2900)
at __webpack_require__ (runtime.js:85)
at Object.Sy1n (main.js:12933)
at __webpack_require__ (runtime.js:85)
at Object.ZAI4 (main.js:15110)
如您所见,foo.node 并未在其实际模块目录 my-electron-app/foo/build/Release/ 中搜索。
位于node_modules/ 并包含build/Release 目录的所有其他本机模块都可以正常加载。
附:如果我将foo.node 复制到预期位置之一,则模块加载正常。
【问题讨论】:
-
哪个环境?开发还是构建之后?
-
它现在似乎工作了,但我仍在重现发生的事情。我会尽快更新我的问题
-
所以运行时的目录似乎是
my-electron-app/所以它应该如何从./foo猜测my-electron-app/foo/build/Release/.. 我不确定,但也许这就是电子不是的原因寻找 foo -
npm i在node_modules中创建了符号链接
标签: node.js electron node-native-addon