javascript - 将本地 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即使那样我也应该在一个名为“保存/加载”的分支中工作
解决方案
我现在找到了一个不会引发任何安全标志的可靠解决方案:
这是我的 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
推荐阅读
- css - “位置:绝对12px * * 10px;”是什么语言
- php - CakePHP:如何在每个控制器中使用带有模型的函数?
- xaml - UWP 滑块工具提示样式问题
- bluetooth-lowenergy - BLE电流时间特性中的调整原因是什么意思?
- machine-learning - 使用经过训练的神经网络进行预测时,输入是否必须贯穿所有层?
- javascript - javascript中数字类型的描述
- android - 如何获得此 UI 结果?
- azure-virtual-network - 添加对等互连未检测到网关子网
- git - 使用原始提交的哈希查找精选或重新设置的提交
- c# - 如何在 ObjectListView 中对对象进行分组和排序?