2016-08-10 4 views
1

Это моя структура проекта:Ошибка: ENOENT: нет такого файла или каталога, если файл существует

enter image description here

Это 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'); 

ничего не работает.

+4

'ENOENT' обычно разрешения. Имеет ли ваше приложение разрешение на доступ к файлу? –

+1

также вы должны называть 'readline' прямо перед' rl.on ('line') '... – cviejo

+0

все нормально, пока я не переместил код в индексный файл. Код был в файле app.js и работал нормально. –

ответ

3

Ваш вызов readline по-прежнему будет относиться к каталогу, в котором работает ваше приложение (ваш корень, где находится приложение app.js), поэтому я не думаю, что вам нужна ссылка родительского каталога.

Это должно быть просто

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

Или, если вы хотите использовать __dirname

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

спасибо, что я должен был вызвать readline прямо перед rl.on ('line') тоже –

+0

Имеет смысл, хотя это не то, что вызывало ошибку, о которой идет речь: Ошибка: ENOENT: нет такого файла или каталога, хотя файл существует – Wake

Смежные вопросы