загрузочный файл nodejs - PullRequest
48 голосов
/ 27 марта 2012

Я хочу загрузить test.txt с помощью nodejs.

var fs = require('fs');
fs.readFile('./test.txt', function (err, data) {
  if (err) {
    throw err; 
  }
  console.log(data);
});

Путь к серверу C:\server\test\server.js. Test.txt находится в том же каталоге, но я получаю эту ошибку: Error: ENOENT, no such file or directory 'C:\Users\User\test.txt'

Ответы [ 5 ]

67 голосов
/ 27 марта 2012

Пути в узле разрешаются относительно текущего рабочего каталога.Добавьте ваш путь к __dirname, чтобы определить путь к местоположению вашего скрипта Node.

var fs = require('fs');
fs.readFile( __dirname + '/test.txt', function (err, data) {
  if (err) {
    throw err; 
  }
  console.log(data.toString());
});
8 голосов
/ 26 апреля 2015

С узлом 0.12 это можно сделать синхронно:

  var fs = require('fs');
  var path = require('path');

  // Buffer mydata
  var BUFFER = bufferFile('../test.txt');

  function bufferFile(relPath) {
    return fs.readFileSync(path.join(__dirname, relPath)); // zzzz....
  }

fs - файловая система. readFileSync () возвращает буфер или строку, если вы спросите.

fs правильно предполагает, что относительные пути являются проблемой безопасности.path это обходной путь.

Чтобы загрузить в виде строки, укажите кодировку:

return fs.readFileSync(path,{ encoding: 'utf8' });
6 голосов
/ 27 марта 2012

Вы должны использовать __dirname, чтобы получить имя каталога , файл расположен вместо текущего рабочего каталога:

fs.readFile(__dirname + "/test.txt", ...);
1 голос
/ 27 марта 2012

, поэтому, если он находится в том же каталоге, просто сделайте это

 fs.readFile(__dirname+'/foo.txt',function(e,d){console.log(d)})
0 голосов
/ 28 апреля 2015

Если он находится в том же каталоге, он должен работать. Я протестировал с тем же кодом, с файлом name.txt, и он работает нормально:

var fs = require('fs');
fs.readFile('./test.txt', function (err, data) {
  if (err) {
    throw err;
  }
  console.log(data.toString());
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...