nodejs fs(文件系统)在本地工作但不在服务器上工作

nodejs fs(filesystem) working locally but not on server

我已经为我的服务器准备好了我的脚本,除了一个变量没有加载到服务器上,因为它似乎文件系统在服务器上没有以相同的方式解释路径(Ubuntu 14.04 x64 vmlinuz-3.13.0-57-通用)。当我在 OS X 10.11.1 上本地测试我的服务器时,一切正常,但在服务器上找不到文件。

var jsonHourlyFile = './data/jsonHourly.json';
console.log(jsonHourlyFile);
console.log(fs.existsSync(jsonHourlyFile));
if (fs.existsSync(jsonHourlyFile)) { //Why was this in the function in the first place...?
  console.log("loaded JsonHourlyFile")
  var jsonHourly = jsonfile.readFileSync(jsonHourlyFile);
} else {
  var jsonHourly = JSON;
  console.log("jsonHourlyFile not found!")
}

这 Returns 在我的计算机上为真,在服务器上为假。我已经使用 FileZilla 将所有文件正确复制到服务器,并且可以确认它们在那里。

我怀疑这与文件路径有关。虽然我认为使用 ./ 将始终指向正确的地图。谁能详细说说?

我必须评论你的最后一句话:

"Though I thought that using ./ will always point to the right map."

这不是真的。 ./ 的意思是 "in this directory",即脚本执行的位置。

在你的本地机器上,你说你的脚本在 /Users/me/WebstormProjects/WebTest 中执行,这意味着你的 JSON 文件应该位于 /Users/me/WebstormProjects/WebTest/data/ 中。我们知道这是真的,因为脚本可以在您的机器上运行。

现在,在服务器上,您说脚本在 /root/WebTest/bin 中执行。因此,除非该特定目录中有一个 data/ 文件夹,其中包含您的 JSON 文件(因此其路径为 /root/WebTest/bin/data/jsonHourly.json),否则您的程序将不会按预期执行。

有很多方法可以解决这个问题,我不知道哪个是最好的。您只需要确保您的本地计算机和服务器具有正确的文件路径,考虑到两个操作系统不同,这可能会有很大不同。

更多关于 Wikipedia 上的路径。