使用 NodeJS 将文件保存在 Snap (Snapcraft) 中

Saving a file in a Snap (Snapcraft) with NodeJS

我在快照 运行ning 时创建新文件时遇到问题;示例:

1) Snap 启动并检查位于 ./config/config.json

config.json 文件

2) 如果找不到该文件(这绝不是第一次应用程序 运行s),它将创建它 fs.writeFile('./config/config.json', 'My Data', 'utf8', (err) => {....})

3) 然后我会在稍后查找该文件以使用它。

我能够 运行 我的节点应用程序,并且在使用 node index.js

时一切正常

我也能够 运行 使用 snap try prime/ --devmode 和所有作品。

当 运行ning snap try prime/ 我在系统日志中收到此错误

Error: ENOENT: no such file or directory, open './config/config.json' 创建时出错。

任何对此的帮助都会很棒!!提前致谢。

我能够通过 NOT 在 NodeJS 中创建和检查配置文件并将所有这些逻辑移动到安装挂钩 (https://docs.snapcraft.io/build-snaps/hooks) 来解决这个问题。

所以现在我的安装挂钩将检查配置文件并创建它,如果它不存在,然后我允许 NodeJS 稍后写入该文件,这样我仍然可以在 NodeJS 中而不是在 Bash。下面是我的安装挂钩,别忘了​​让它可执行。

此文件位于 snap/hooks/install

#!/bin/sh
set -e

CONFIG_FILE=$SNAP_COMMON/config.json

if [ ! -f $CONFIG_FILE ]; then
    # File Not Found, Create it
    echo '{}' > $CONFIG_FILE
fi

希望这对某人有所帮助!