nodejs加载文件

我想用nodejs加载test.txt。

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

服务器的path是C:\server\test\server.js 。 test.txt位于相同的目录,但我得到这个错误: Error: ENOENT, no such file or directory 'C:\Users\User\test.txt'

Node中的path相对于当前工作目录解决。 使用__dirname前缀您的path来parsing到您的节点脚本的位置的path。

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

您应该使用__dirname来获取文件所在的目录名称而不是当前的工作目录:

 fs.readFile(__dirname + "/test.txt", ...); 

使用节点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()返回一个缓冲区或string,如果你问。

fs正确地假设相对path是一个安全问题。 path是一个解决方法。

要作为string加载,请指定编码:

 return fs.readFileSync(path,{ encoding: 'utf8' }); 

所以如果它在同一个目录下,就这样做

  fs.readFile(__dirname+'/foo.txt',function(e,d){console.log(d)}) 

如果它在同一个目录中,它应该工作。 我已经testing了相同的代码,文件名name.txt ,它工作正常:

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