首页 > 解决方案 > 将本地 JSON 加载到电子中,不能使用 require/include

问题描述

我一直在将这段代码重构为公开,我正在用它来解决过去的一些错误。就像编写我的保存和加载功能一样。

我需要在我的代码中加载一些 JSON 文件。不管我在哪里可以访问它 https://github.com/cicerohellmann/3DBRPG/blob/board/board/boardView.js

在尝试将文件带入电子或解决方法时,我遇到了大多数可能的解决方案,因为在使用电子而不是节点打开我的项目后无法使用 require 或包含在我的 js 文件中。

window.fs = require("fs") 不会,

用电子预加载我无法让它工作(这实际上是我最好的镜头),

<script>
    window.nodeRequire = require;
    delete window.require;
    delete window.exports;
    delete window.module;
</script>
<script type="text/javascript" src="jquery.js"></script>

也不起作用

我正在工作的分支是这个https://github.com/cicerohellmann/3DBRPG/tree/board即使那样我也应该在一个名为“保存/加载”的分支中工作

标签: javascriptelectronlocal-storage

解决方案


我现在找到了一个不会引发任何安全标志的可靠解决方案:

这是我的 main.js 创建窗口方法:

function createWindow () {
  mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js')
    }
  });
  mainWindow.loadFile('index.html')
  mainWindow.on('closed', function () {
    mainWindow = null
  });
}

观察我添加了“__dirname”,这是一个抓取当前路径的方法,并添加了我的 preload.js 脚本

这是我的 preload.js 脚本:

window.fs = require('fs');
window.path = __dirname;

我发现用它导入这个“__dirname”方法非常有用,因为我的本地文件的当前路径可能会在未来和其他人的机器上发生变化。

现在您可以使用“window.fs”加载和保存文件

这是我的数据管理类:https ://github.com/cicerohellmann/3DBRPG/blob/dataManagement_save_load/dataManagement.js


推荐阅读