node.js - Electron Node -Gyp 库未加载 : dylib

标签 node.js macos electron node-gyp dylib

我有一个与 native Node 模块、静态和动态库捆绑在一起的 Electron 项目。
在 mac 上运行打包的应用程序时,我在开发者控制台中遇到以下错误。 native Node 模块(addon.node)加载正常但不是dylib。

Uncaught Error: Cannot open ./addon.node: Error: dlopen(./addon.node, 1): Library not loaded: Core.dylib
  Referenced from: /Users/Camera/Documents/myapp/dist/mac/myapp.app/Contents/Frameworks/addon.node
  Reason: image not found
    at Object.<anonymous> (main.js:3)
    at Object.<anonymous> (main.js:3)
    at n (main.js:1)
    at Module.<anonymous> (main.js:306)
    at n (main.js:1)
    at main.js:1
    at main.js:1
绑定(bind).gyp
    "targets": [{
        "target_name": "addon",
        ...
        
        'conditions': [
            ['OS=="mac"', {
                ...

                'library_dirs': [
                    "/usr/local/lib",
                    "'$(CORE_DIR)'/lib"
                ],
                "link_settings": {
                    "libraries": [
                        "-L'$(CORE_DIR)'/lib",
                    ],
                },
                'libraries': [
                    "-lCore"
                ],
                "copies":[{
                    'destination': './',
                    'files': [
                        "$(CORE_DIR)/lib/Core.dylib"
                    ]
                }],
                'xcode_settings': {
                    'GCC_ENABLE_CPP_RTTI': 'YES',
                    'GCC_ENABLE_CPP_EXCEPTIONS': 'YES',
                    'CLANG_CXX_LIBRARY': 'libc++',
                }
            }],
我在 CORE_DIR/lib 中有这些静态和动态库
Core.a
Core.dylib
时工作正常
通过在打包的应用程序中运行可执行文件,在终端中运行应用程序。
但 Core.dylib 应该存在于终端当前目录的同一目录中。
./dist/mac/myapp.app/Contents/MacOS/myapp
但是如何通过双击运行来完成这项工作?我已经在打包的应用程序中尽可能复制了 Core.dylib,但没有任何效果。
谢谢

最佳答案

在将项目从 Windows 移动到 Mac 时,我遇到了同样的问题。
只需删除 node_modules 并重新安装它对我有用

关于node.js - Electron Node -Gyp 库未加载 : dylib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63604706/

相关文章:

node.js - Sequelize - 根据标题中的术语过滤帖子?

node.js - 使用 Firebase Cloud Functions 时 Nodemailer queryA EREFUSED localhost

macos - Mac 和 PC 之间的协同更改 mac 热键

node.js - 如何解决在我的 Electron 应用程序中加载 xml2json

node.js - Electron和NodeJS无法将日志写入文件

Javascript:通过检查对象的属性从数组中删除对象

node.js - 是否有专门为 Node.js 开发实践构建的客户端框架?

macos - El Capitan 上的 initdb/usr/local/var/postgres

iphone - 新的现代 Objective-C 枚举类型检查

node.js - Electron/Node 文件路径位置