1

我正在使用电子,我的主要流程中有以下内容

import * as Git from "nodegit";
console.log("NodeGit version is:", Git.version);
console.log("The HARD reset type has the id", Git.Reset.TYPE.HARD);

当我像往常一样开始纱线时,我得到以下输出

NodeGit version is: 0.27.0
App threw an error during load
TypeError: Cannot read property 'TYPE' of undefined
    at Object../src/main.ts ([redacted-project-dir]\.webpack\main\index.js:17543:57) 
    at __webpack_require__ ([redacted-project-dir]\.webpack\main\index.js:21:30)     
    at [redacted-project-dir]\.webpack\main\index.js:85:18
    at Object.<anonymous> ([redacted-project-dir]\.webpack\main\index.js:88:10)      
    at Module._compile (internal/modules/cjs/loader.js:968:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:986:10)       
    at Module.load (internal/modules/cjs/loader.js:816:32)
    at Module._load (internal/modules/cjs/loader.js:728:14)
    at Module._load (electron/js2c/asar.js:717:26)
    at Function.Module._load (electron/js2c/asar.js:717:26)

这可以在使用创建的新项目中复制

yarn create electron-app my-electron-webpack-typescript --template=typescript-webpack

请注意,当我使用 ipc 在渲染器进程中执行这些操作时,我会得到相同的结果。

我在这里找到了一个类似问题的讨论,其中解决方案似乎是将构建目标设置为 ES5 而不是 ES6,因为 Reset 模块有一个调用的函数default,可能导致 ES6 代码无法导入它。我不确定这是否可能是这种情况。

但我不知道如何将编译目标指定为 ES5。(我正在使用 webpack,我似乎也在使用 babel。)

4

1 回答 1

0

我相信你应该检查你包装的模块类型。webpack + typescript 使用的默认模块系统可以改变require这样的行为,你不能改变导出。NodeGit 在其所有文件中更改其主要导出,因此lib/enums.js无法分配TYPEGit.Reset. 我相信在我的一个项目中,我必须切换到 babel(现在支持 typescript)+ CommonJS 以避免这个问题。

于 2020-09-11T15:42:12.290 回答