Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor使用readFileSync读取公用文件夹中的文件在部署时不工作_Meteor - Fatal编程技术网

Meteor使用readFileSync读取公用文件夹中的文件在部署时不工作

Meteor使用readFileSync读取公用文件夹中的文件在部署时不工作,meteor,Meteor,我正在尝试读取/public文件夹中的.json文件。我使用的相对路径是“../../../../../public/data.json”,当我使用meteor run运行时,它会起作用 然而,当我通过运行meteor deploy MyApp.meteor.com部署到meteor子域时,它崩溃了,日志显示 错误:enoint,没有这样的文件或目录“../../../../../../public/data.json” 我尝试使用'data.json'、'public/data.json'等,

我正在尝试读取/public文件夹中的.json文件。我使用的相对路径是“../../../../../public/data.json”,当我使用
meteor run
运行时,它会起作用

然而,当我通过运行meteor deploy MyApp.meteor.com部署到meteor子域时,它崩溃了,日志显示

错误:enoint,没有这样的文件或目录“../../../../../../public/data.json”


我尝试使用'data.json'、'public/data.json'等,但无法让它工作。我在这里遗漏了什么?

如果您将data.json文件放在公用文件夹的根目录中,您可以使用路径“/data.json”

将数据放在应用程序根目录下的“私有”目录中,而不是“公共”(假设您只在服务器上读取,这似乎是您正在做的)。当您需要该文件时(无论是否部署),它都位于路径“assets/app/”处

例如,如果您的应用程序具有目录结构:

myApp.css
myApp.js
myApp.html    
server/
    serverCode.js
private/
    data.json
您可以使用类似“peerlibrary:fs”的东西,它公开光纤感知的fs同步功能,并在“serverCode.js”中执行以下操作


我已经尝试过了,但得到了如下错误:(STDERR)error:enoint,没有这样的文件或目录“/data.json”,这是指如果您正在向服务器发出http GET请求,但如果您正在从服务器代码打开文件,则不会。只是为了澄清,如果您在本地运行,您的应用程序将在一个名为(从应用程序根目录)的目录中运行:“.meteor/local/build/programs/server”,您可以在其中找到“assets/app”目录,其中包含“private”目录内容的副本。如果您想将其保留在“public”目录中,请使用“./web.browser/app”/“作为部署时的路径前缀。您已经说明了在未部署时如何到达它。因为部署与否是不同的,所以这是一个不太理想的解决方案。
var data = JSON.parse(fs.readFileSync("assets/app/data.json"));