【问题标题】:Error: ENOENT: no such file or directory, though the file exists错误:ENOENT:没有这样的文件或目录,尽管文件存在
【发布时间】:2023-04-01 16:58:01
【问题描述】:

这是我的项目结构:

这是index.js

var express = require('express');
var router = express.Router();
var fs = require('fs');
var links = require('../models/Links');

var readline = require('linebyline');
var rl = readline('../data.txt');
router.get('/', function (req, res) {

    rl.on('line', function (line, lineCount, byteCount) {
        var data = line.split(',');
        var id = data[0];
        var url = data[1];           
    })
});

module.exports = router;

我做错了什么?

我尝试重写

var rl = readline('/../data.txt');
var rl = readline(__dirname +'/../data.txt');

没有任何作用。

【问题讨论】:

  • ENOENT 通常是权限。您的应用程序是否有权访问该文件?
  • 另外,你应该在rl.on('line')之前致电readline...
  • 在我将代码移到索引文件中之前它运行良好。代码在 app.js 文件中并且运行良好。
  • @NickBull 是的,每个人都有对该文件的读写权限
  • 这与问题无关。只是你的代码现在的样子你不会得到任何行(即使在解决了问题之后)

标签: node.js line-by-line


【解决方案1】:

您的 readline 调用仍将与您的应用运行所在的目录相关(您的根目录,app.js 所在的位置),因此我认为您不需要父目录引用。

应该只是

var rl = readline('./data.txt');

或者如果你想使用 __dirname

var rl = readline(__dirname + '/data.txt');

【讨论】:

  • 谢谢,想通了。我也必须在 rl.on('line') 之前调用 readline
  • 有道理,尽管这不是导致问题的原因:错误:ENOENT:没有这样的文件或目录,尽管文件存在
猜你喜欢
  • 1970-01-01
  • 2017-10-07
  • 1970-01-01
  • 1970-01-01
  • 2019-03-09
  • 2017-12-28
  • 2022-01-16
  • 2021-03-30
  • 1970-01-01
相关资源
最近更新 更多