0

nodegit 0.26.5通过npmElectron 应用程序的渲染器部分安装并导入包。在编译期间,我收到以下错误:

WARNING in ./node_modules/nodegit/dist/nodegit.js
Module not found: Error: Can't resolve '../build/Release/nodegit.node' in '/Users/steve/Documents/git/git_reader/node_modules/nodegit/dist'

ERROR in ./node_modules/nodegit/dist/nodegit.js
Module not found: Error: Can't resolve '../build/Debug/nodegit.node' in '/Users/steve/Documents/git/git_reader/node_modules/nodegit/dist'
ERROR in ./node_modules/nodegit/dist/nodegit.js
Module not found: Error: Can't resolve '../package' in '/Users/steve/Documents/git/git_reader/node_modules/nodegit/dist'

在我的node_modules/nodegit/build目录中,我只有一个Release目录。有人知道我在这里想念什么吗?

我创建了一个 repo,它是从样板模板中派生出来的。我只添加nodegit@types/nodegit作为依赖项并将其导入details.component.ts

https://github.com/Githubber2021/electron-nodegit-error

git clone https://github.com/Githubber2021/electron-nodegit-error.git
npm install
npm run electron:local

重现问题。任何人都可以在他们的机器上重现错误吗?我在这里想念什么?非常感谢您的任何帮助或提示!!

4

1 回答 1

1

我正在使用nodegit 0.27,我的错误信息略有不同,它是

nodegit.js:1088 Uncaught Error: Cannot find module '../package'

请注意,我将 webpack 与 electron forge 一起使用,并且在我的 package.json 中有以下内容。(我用 替换了不相关的部分...

{
    "name": ...
    "version": ...
    "description": ...
    "config": {
        "forge": {
            "packagerConfig": {},
            "makers": [
                ...
            ],
            "plugins": [
                [
                    "@electron-forge/plugin-webpack",
                    {
                        "mainConfig": ...
                        "renderer": {
                            "config": "./webpack.renderer.config.js",
                            "entryPoints": [
                                ...
                            ]
                        }
                    }
                ]
            ]
        }
    },
    ...
}

在我的导出中,webpack.renderer.config.js我需要添加一个externals字段,以便它们看起来像这样

module.exports = {
    ...
    externals: {
        nodegit: 'commonjs nodegit'
    },
};

然后在我main.ts的主要过程中

(global as any).mynodegit = require('nodegit');

然后我使用 IPC 在我的渲染器进程中访问 nodegit。请注意,@ts-ignore从 typescript 中抑制错误消息是必需的。

import { remote } from "electron";
// @ts-ignore
import * as Git from "@types/nodegit";
// @ts-ignore
const Git = remote.getGlobal('mynodegit');

这是帮助我完成此https://github.com/newblord/electron-react-webpack-nodegit-boilerplate的样板

于 2020-09-01T12:39:32.870 回答