如何从流星应用程序内部读取本地文件系统中的文件?

时间:2018-03-23 05:42:35

标签: meteor

我有一个流星应用,需要定期读取位于应用包之外的主机文件系统上的文件。我正在使用节点fs来实现这一点,它在我的(macOS)开发机器上运行良好。

但是,当我运行mup deploy将其部署到我的(Ubuntu 14)服务器时,mup在启动meteor后返回以下错误:

Error: ENOENT: no such file or directory, open '/home/sam/data/all_data.json' at Object.fs.openSync (fs.js:652:18) at Object.fs.readFileSync (fs.js:553:33)

有谁知道为什么会这样?

2 个答案:

答案 0 :(得分:1)

在服务器上运行meteor build的用户需要有权访问该文件夹 - 读取权限。我会将文件存储在与主文件不同的目录中,因为您不想搞砸它。无论哪种方式执行类似chmod -R 444 /home/sam/data的操作,都应该为该目录中的所有文件提供对任何用户的读访问权限。您可能在macOS上以开发模式运行meteor作为本地用户(sam?),但由于{meteor或其他用户在ubuntu上运行{1}}和mup

答案 1 :(得分:1)

你应该密切关注mup文档。你看过mup config中的卷设置了吗?试试这个来解决你的问题。

原因:除非指定,否则mup在docker中运行应用程序而无需访问主机文件系统。卷设置为您进行mup部署。

以下是来自http://meteor-up.com/docs.html的mup配置部分,所有内容已配置,请阅读更多内容以获得更好的主意。

    name: 'app',
    path: '../app',

    // lets you add docker volumes (optional). Can be used to
    // store files between app deploys and restarts.
    volumes: {
      // passed as '-v /host/path:/container/path' to the docker run command
      '/host/path': '/container/path',
      '/second/host/path': '/second/container/path'
    },