webpack - NodeGit - 无法读取未定义的属性 'TYPE'

标签 webpack electron electron-forge nodegit

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

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);
当我像往常一样开始 yarn 时,我得到以下输出
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 在渲染器进程中执行这些操作时,我会得到相同的结果。
我发现了一个讨论 here有一个类似的问题,解决方案似乎是将构建目标设置为 ES5 而不是 ES6,因为 Reset 模块有一个名为 default 的函数这可能会导致 ES6 代码无法导入它。我不确定这是否可能是这种情况。
但我不知道如何将编译目标指定为 ES5。 (我正在使用 webpack,我似乎也在使用 babel。)

最佳答案

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

关于webpack - NodeGit - 无法读取未定义的属性 'TYPE',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63844607/

相关文章:

javascript - 如何在 Angular 运行时设置deployUrl

jquery - 数据表仅在选择事件时返回最后一行

vue.js - 视觉 : How do you add E2E tests after not including them in initial webpack template?

javascript - 如何使用 webpack 从 node_modules 目录添加 Font Awesome

javascript - 如何在 Electron js中创建模态? (javascript,html,css)

javascript - 无需浏览器 GUI 的文本转语音

node.js - 如何在Electron-Forge中成功高效地安装SQLite3?

javascript - 如何在不使用 Electron 锻造重定向到根目录的情况下进行热重装并使用react

angular - Angular 2 应用程序中没有 'Access-Control-Allow-Origin' header