我对在Node.js中读取文件感到很困惑。
fs.open('./start.html', 'r', function(err, fileToRead){
if (!err){
fs.readFile(fileToRead, {encoding: 'utf-8'}, function(err,data){
if (!err){
console.log('received data: ' + data);
response.writeHead(200, {'Content-Type': 'text/html'});
response.write(data);
response.end();
}else{
console.log(err);
}
});
}else{
console.log(err);
}
});
文件start.html与尝试打开并读取它的文件位于同一目录中。
但是,在控制台中,我得到:
{[错误:ENOENT,打开'./start.html']错误号:34,代码:'ENOENT',路径:'./ start.html'}
有任何想法吗?
您可以console.log(“ __ dirname:” + __dirname); 在输出err之前?这将告诉您此时可执行文件所在的目录是本地的。您可以做一些事情来更改位置,也许您遇到了麻烦,也许代码不在您认为的__dirname处运行。
—
布赖恩
该文件必须与运行节点进程所在的目录相同。因此,如果文件位于dir / node / index.html中,而您的app.js文件也位于目录中,但是您这样做:node /dir/node/app.js然后,您将收到错误消息。dc5的解决方案应该可以解决问题。
—
埃文·肖蒂斯
您应该关闭此问题,或提供您的编辑作为答案并接受。
—
ChrisCM 2013年
使用
—
Paresh Barad,
path.join(__dirname, '/filename.html')并从stackoverflow.com/a/56110874/4701635中
path.join(__dirname, 'start.html')