【问题标题】:npm 'json-update' is not working as expectednpm 'json-update' 没有按预期工作
【发布时间】:2017-04-10 15:29:14
【问题描述】:

我们正在使用 npm json-update 更新电子应用程序中的 json 文件。它在本地环境中运行良好,因为我们在“D”、“E”或其他一些驱动器中有项目,但是一旦我们安装了应用程序,我们就无法更新“C”驱动器中的json 文件。当我们尝试读取json 时会抛出这样的错误,

错误:EPERM:不允许操作,打开 'C:\Program 文件...........\product.json.lock' at Error (native)

在编写json 时会抛出这样的错误,

错误:保存 JSON 文件时出现问题:EPERM:不允许操作,打开 'C:\Program 文件...........\product.json' 在 C:\Program Files...........\node_modules\json-update\lib\json-update.js:92:23 在 C:\Program Files ...........\node_modules\lockfile\lockfile.js:61:41 在 FSReqWrap.oncomplete (fs.js:123:15)

任何帮助/建议将不胜感激。

【问题讨论】:

  • 问题在于权限。删除product.json.lock再试一次,否则需要联系系统管理员
  • 其实我们并没有'product.json.lock'这样的文件,它是在运行时创建并立即删除的。
  • 那你需要联系你的系统管理员

标签: node.js electron


【解决方案1】:

如果你可以确定两个实例不会尝试更新同一个 json 文件,你可以破解 json-update 来移除 lockfile 的使用。它似乎在第 42 行和第 90 行:https://github.com/runvnc/json-update/blob/master/lib/json-update.js#L42

但是,如果问题是应用程序无权在 C:\Program Files 下创建/修改文件,那么这样做可能只会让您陷入下一次失败。感觉更好的解决方案是让您的应用程序将其数据 JSON 文件安装到应用程序数据文件夹 (app.getPath('userData');),然后在那里进行修改。查看上面的代码,似乎 lockfile 与您的 json 文件位于同一目录中,因此如果您采用这种方法,您也不需要破解 json-update。

【讨论】:

  • 嗨@Darren Cook,感谢您的建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-19
  • 1970-01-01
  • 2021-10-19
  • 2020-03-18
  • 2012-06-14
相关资源
最近更新 更多