【问题标题】:node-webkit can not write file in app.nwnode-webkit 无法在 app.nw 中写入文件
【发布时间】:2015-01-07 13:09:45
【问题描述】:
var jf = require('jsonfile');

jf.writeFile("./setting.json", newSettings, function(err) {
    if (err){
        console.log("writing file err: ", err);
    } else {
        console.log("setting saved successfully.");
    }
});

以上代码在开发(npm start)和分发(zip 到 app.nw 并放在 node-webkit.app 资源目录中)都成功报告,但只有开发中的文件发生了变化。我不知道为什么。 试过utf8和base64编码,都是一样的。

或者有没有办法绕过它?比如把setting.json文件放到别的地方?

【问题讨论】:

  • 我尝试使用 PouchDB。同样的事情也发生了。它可以在开发中使用,但是一旦我将 app.nw 放入资源中,就无法保存更改。
  • 你真的需要一个 JSON 写入文件的模块吗?你就不能:fs.writeFile("./settings.json", JSON.stringify(settings, null, 4), function(err){})吗?它将输出一个格式化的 JSON 文件。
  • 你检查过你的程序有权限访问目标路径吗?

标签: node-webkit writefile


【解决方案1】:

您要查找的文件位于本地临时文件夹中。例如:“C:/Users/[YourUserName]/AppData/Local/Temp/[node_webkit_uniqueid]”/。您的设置 json 文件应该在 /Local/Temp/ 文件夹内。

获取生产环境的执行目录。试试:

var live_path = require('path');
var execPath  = live_path.dirname( process.execPath );

为了区分生产环境和开发环境,您可以在 package.json 文件中设置环境变量。

"scripts": {
   "start": "set NODE_ENV=development && nw"
}

在您的代码中,您可以像这样检索环境变量。

var env = process.env.NODE_ENV || 'production';
if (env === 'production') {
   //production settings
} else {
   //development settings
}

【讨论】:

    猜你喜欢
    • 2016-12-24
    • 2014-06-11
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 2013-09-05
    • 2014-05-20
    • 1970-01-01
    相关资源
    最近更新 更多