在节点js中找不到文件(Intellij)

时间:2016-04-01 15:14:32

标签: javascript node.js intellij-idea

我正在使用node js express。我试图访问位于该js文件的同一目录中的文本文件。所以文件结构就像这样

- ProjectFolder
  |
  - many modules and folders
  - routes
    |
    - Index.js
    - input.txt

我尝试的简单代码是,

var data = fs.readFile('~/IdeaProjects/Title/routes/input.txt');
console.log("Synchronous read: " + data.toString());

console.log("Program Ended");

我确实尝试过不同的路径,但没有任何作用。为了您的信息,我使用Fedora作为操作系统。

我得到的错误是,

Error: ENOENT: no such file or directory, open '~/IdeaProjects/Title/routes/input.txt'
at Error (native)

有关如何访问该文件以便我可以读取和写入文件内容的任何建议都将受到欢迎。寻找详细的答案。

1 个答案:

答案 0 :(得分:3)

Node不会解释某些具有特殊含义的字符(如~)或shell变量(如$HOME),因此您需要使用类似path.resolve()的内容来获取绝对路径或使用相对路径(例如IdeaProjects/Title/routes/input.txt)。

另外,正如@Gothdo指出的那样,文件名中存在差异,这将导致区分大小写的文件系统出现问题。

您还需要将fs.readFile()更改为fs.readFileSync()或向fs.readFile()添加回调,如下所示:

fs.readFile('~/IdeaProjects/Title/routes/input.txt', function(err, data) {
  if (err) throw err;
  console.log("Synchronous read: " + data.toString());
  console.log("Program Ended");
});