【问题标题】:Saving a file in a Snap (Snapcraft) with NodeJS使用 NodeJS 快速保存文件(Snapcraft)
【发布时间】:2019-01-07 05:39:40
【问题描述】:

我在运行 snap 时遇到了创建新文件的问题;示例:

1) Snap 启动并检查./config/config.json 处的config.json 文件

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

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

当使用node index.js 时,我能够运行我的节点应用程序并且一切正常

我还可以使用snap try prime/ --devmode 运行,一切正常。

运行 snap try prime/ 时,我在 syslog 中收到此错误

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

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

【问题讨论】:

    标签: node.js snapcraft


    【解决方案1】:

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

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

    此文件位于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
    

    希望这对某人有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-26
      • 2020-05-30
      • 2016-03-02
      • 1970-01-01
      • 2012-06-03
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      相关资源
      最近更新 更多