我用电子和Angular2(Angular-CLI)创建了一个应用程序。 不幸的是,我不能像电子一样导入节点模块。
import {remote} from "electron";
每当我尝试导入节点模块并使用它们时,我都会遇到以下错误:
Uncaught TypeError: fs.readFileSync is not a function
我已经发现,如果我将以下几行添加到我的HTML中,我可以解决问题
<script>
window.nodeRequire = require;
delete window.require;
delete window.exports;
delete window.module;
</script>
并用于导入
const remote = nodeRequire("electron").remote;
但是通过这个解决方案,我无法使用打字。
我知道这是因为angular2需要模块。 Angular2有它自己的require方法。因此,它适用于nodeRequire。
对于包装我使用带有AngularCLI的webpack。 我的tsconfig.json看起来像下面的
{
"compilerOptions": {
"baseUrl": "",
"declaration": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [
"es6",
"dom"
],
"mapRoot": "./",
"module": "commonjs",
"moduleResolution": "node",
"outDir": "../dist/out-tsc",
"sourceMap": true,
"target": "es5",
"typeRoots": [
"../node_modules/@types"
]
}
}
那么,有没有什么方法或解决方案可以在带有打字的电子+角度2项目中导入节点模块?