在 Electron 中运行 nodegit 失败
Runing nodegit in Electron fails
我通过 npm
安装了 nodegit 0.26.5
并将包导入我的 Electron 应用程序的渲染器部分。在编译过程中,我收到以下错误:
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
目录。有谁知道我在这里错过了什么?
我创建了一个存储库,它是我从样板模板中派生出来的。我只添加了 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
重现问题。任何人都可以在他们的机器上重现错误吗?我在这里错过了什么?非常感谢您的帮助或提示!!
我正在使用 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
来抑制来自打字稿的错误消息。
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
我通过 npm
安装了 nodegit 0.26.5
并将包导入我的 Electron 应用程序的渲染器部分。在编译过程中,我收到以下错误:
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
目录。有谁知道我在这里错过了什么?
我创建了一个存储库,它是我从样板模板中派生出来的。我只添加了 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
重现问题。任何人都可以在他们的机器上重现错误吗?我在这里错过了什么?非常感谢您的帮助或提示!!
我正在使用 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
来抑制来自打字稿的错误消息。
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