即使路径正确,也无法在Node中找到文件

srp*_*alo 5 fs node.js

执行此代码后:

const filename = "../../.dburl"
const url = fs.readFileSync(filename, 'utf-8')
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Error: ENOENT: no such file or directory, open '../../.dburl'
Run Code Online (Sandbox Code Playgroud)

我到目前为止所知道的:

1)文件路径正确。

2)我的应用程序有权读取文件。

3)即使存储在与应用程序相同的目录中,也不会读取.dburl。

非常感谢任何帮助...谢谢!

bsy*_*syk 6

您可以使用模块级变量'__dirname'来获取包含当前脚本的目录。然后,您可以使用path.resolve使用相对路径。

console.log('Path of file in parent dir:', require('path').resolve(__dirname, '../app.js'));
Run Code Online (Sandbox Code Playgroud)


Hit*_*ahu 6

在同一级别阅读文件

在此处输入图片说明

 //the server object listens on port 8080
    const PORT = 8080;
    var http = require("http");
    var fs = require("fs");
    var path = require("path");

    //create a server object:
    http
      .createServer((req, res) => {
        console.log("READING FILE: ", path.resolve(__dirname, "input.txt"));

        fs.readFile(path.resolve(__dirname, "input.txt"), (err, data) => {
          //error handling
          if (err) return console.error(err);

          //return file content
          console.log("FILE CONTENT: " + data.toString());
          res.write(data.toString());
          res.end();
          console.log("READ COMPLETED");
        });
      })
      .listen(PORT);
Run Code Online (Sandbox Code Playgroud)

阅读其他级别的文件:

在此处输入图片说明

//the server object listens on port 8080
const PORT = 8080;
var http = require("http");
var fs = require("fs");
var path = require("path");

//create a server object:
http
  .createServer((req, res) => {
    console.log("READING FILE: ", path.resolve(__dirname, "./mock/input.txt"));

    fs.readFile(path.resolve(__dirname, "./mock/input.txt"), (err, data) => {
      //error handling
      if (err) return console.error(err);

      //return file content
      console.log("FILE CONTENT: " + data.toString());
      res.write(data.toString());
      res.end();
      console.log("READ COMPLETED");
    });
  })
  .listen(PORT);
Run Code Online (Sandbox Code Playgroud)