javascript - 在 node-webkit 应用程序之外需要/运行 JavaScript

标签 javascript node-webkit

假设我有以下应用程序结构:

outer-folder/
├── my-app/
└── settings.js

其中 my-app/ 是包含 package.json 的未构建目录 打包的应用程序 my-app。 exemy-app.app

我无法将 settings.js 与我的应用程序的其余部分打包在一起,因为我希望该文件可供用户编辑,并在启动时加载以配置我的应用程序。此外,我计划允许 settings.js 驻留在任何地方(例如,在用户的主目录中)并且可以从那里加载。

当应用程序未构建时,这可以正常工作。我只是有一个文件的相对路径和 require() 它像往常一样。但是当应用程序构建时(使用 grunt-node-webkit-builder 如果这有所不同)这失败了,我得到了可怕的“找不到模块”错误。

我已经搜索了 node-webkit wiki,但找不到关于这个问题的任何信息,我是不是遗漏了什么? 从打包的 node-webkit 应用程序加载和运行外部 JavaScript 文件的最佳方式是什么,就像使用 require() 所做的那样?

最佳答案

我建议您使用应用程序数据路径。 请参阅文档 here

一个例子

var gui = require('nw.gui');
var path = require('path');
var yaml = require('js-yaml');
var fs = require('fs');

var confPath = path.join(gui.App.dataPath, 'conf', "dev-conf.yml");
try {
  conf = yaml.load(fs.readFileSync(confPath, 'utf-8'));
} catch (err) {
  throw new Error("Cannot read or parse configuration file '"+confPath+"': "+err);
}

将代码和配置分开是一个很好的做法,App.dataPath针对用户应用程序数据中的应用程序特定文件夹(每个操作系统不同)。

我通常使用安装程序将我的配置文件复制到其中。

下一个提示:我更喜欢使用 YAML 而不是 JSON 进行配置或设置,因为它允许您在文件中插入注释。

关于javascript - 在 node-webkit 应用程序之外需要/运行 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21746570/

相关文章:

node.js - Node-Webkit:fs.readdirSync ("~")不起作用

node.js - 在 npm 安装期间检测 node-webkit

javascript - 按键jquery上的表单验证

javascript - 在日历上画一条线

javascript - 我可以在 Node Webkit 中保护 javascript 以外的资源吗?

windows - 将 node-webkit 应用程序打包为 ".appx"(适用于 Windows 8 商店)

node.js - 为什么 require ('child-process' ) 在没有 Internet 连接的情况下无法在 Node Webkit 中工作?

javascript - 使用嵌套 json 数据的 d3 热图 : how to create grids

javascript - 选择模板中的 DOM 元素

javascript - 如何在 Laravel5 中禁用选择?