我有一个React,Electron应用程序,我希望能够从ES6编译(使用Babel和Webpack)访问本机节点模块。
例如,当我尝试要求" fs"节点模块访问文件系统我收到以下错误。
ERROR in ./src/app.js Module not found: Error: Cannot resolve module 'fs' in C:\Users\Propietario-1\Documents\GitHub\AMPLI @ ./src/app.js 1:358-371
但是当我从'#34;无编译" js文件它的工作原理。我可以访问" fs"模块。
感谢任何帮助。
更新(2016-08-28):
我最终要求index.html上的脚本标记中的fs
模块调用捆绑的脚本。它有效!
<script>
const fs = require('fs');
require('bundle.js');
</script>
执行此操作后,fs
成为bundle.js
中所有脚本可用的全局变量。只需确保编辑您的linter选项以避免覆盖它或undef
错误。
答案 0 :(得分:6)
Electron作为两个进程运行:主节点进程和渲染器进程,有点像传统的Web浏览器客户端和服务器关系。渲染器进程无法使用不适合浏览器的节点模块(例如fs
),因为它基本上是一个浏览器。
提供了两种方法来在渲染器进程和主进程之间进行通信:ipcRenderer
和remote
。对于简单的任务,远程更容易。要在渲染器进程中使用webpacked react项目中的fs
模块:
var fs = require('electron').remote.require('fs');
答案 1 :(得分:0)
我最终要求index.html上的脚本标记中的fs
模块调用捆绑的脚本。它有效!
<script>
const fs = require('fs');
require('bundle.js');
</script>
执行此操作后,fs
成为全局变量,可用于bundle.js
中的所有脚本。只需确保编辑您的linter选项以避免覆盖它或undef
错误。