【问题标题】:readFileSync - no such file or directory on packaged appreadFileSync - 打包的应用程序上没有这样的文件或目录
【发布时间】:2020-08-18 20:48:25
【问题描述】:

我正在开发一个 Electron 应用程序。 我的 src 文件夹中有几个 JSON 文件需要在应用初始化(设置、配置等)期间复制到用户文件夹。

在开发模式下以及当我对 JSON 文件执行import 时,它运行良好。

但根据我的需要,readFileSync 是实现此功能的最佳方式。

var srcPath = path.resolve(__dirname, '../config/settings.json')
fs.readFileSync(srcPath)

我在运行打包的 exe 应用程序(在 asar 中)时遇到错误。 收到这样的错误消息:

Error: ENOENT: no such file or directory, open 
'C:\Users\username\Desktop\NodeJS\branches\Electron
\myApp\dist\electron\My-App-win32-x64\resources\config\settings.json'

readdirSync() 也因为同样的原因不能工作。

我了解我的相对路径在打包版本中有所不同 我检查了 asar 文件,但似乎找不到我的 JSON 文件。不确定我是否正确检查,因为它是由 Webpack 捆绑的。

本例中我的文件位于:

C:\Users\username\Desktop\NodeJS\branches\Electron\myApp\src\config\settings.json

我怎样才能做到这一点?

有没有办法强制电子(我正在使用带有 Quasar 框架的 Electron-Packager)将我的 JSON 文件包含在打包的应用程序中?

Webpack 不会捆绑 JSON 文件吗??

想法?请帮忙!

【问题讨论】:

  • 我需要从我的 srcPath(dev 目录)中读取。但由于我使用的是__dir,所以当我使用打包的应用程序(dist 文件夹中的 .exe)运行时,路径会变得不同。不能真正做绝对路径,因为它会弄乱其他开发人员的代码。

标签: node.js json vue.js electron fs


【解决方案1】:

作为一种解决方法,我刚刚创建了一个包含“打包后”脚本的文件夹。其中之一是从我的 src 文件夹复制到我的 dist\electron\appName\resources 文件夹(使用robocopy)。

【讨论】:

    猜你喜欢
    • 2021-07-10
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    • 2019-12-29
    相关资源
    最近更新 更多