我有一个流星应用,需要定期读取位于应用包之外的主机文件系统上的文件。我正在使用节点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)
有谁知道为什么会这样?
答案 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'
},