我现在正在使用“ Beginning Node.js”教科书来学习Node.js。
本书中的示例在命令提示符下无法正确执行。 (我使用的是带有Node v9.4.0的Ubuntu 18.04,该书已经发行了三年,所以这可能有关吗?)
在该书的可下载源代码中,这是所提供的代码:
var fs = require('fs');
// Create readable stream
var readableStream = fs.createReadStream('./cool.txt');
// Pipe it to out stdout
readableStream.pipe(process.stdout);
文件cool.txt
位于父目录中。
-parentFolder
---- jsFileToExecute.js
---- cool.txt
当我在命令提示符下运行node jsFileToExecute.js
时,得到以下响应:
events.js:137
throw er; // Unhandled 'error' event
^
Error: ENOENT: no such file or directory, open './cool.txt'
由于此源代码直接来自教科书出版商的网站,但仍无法运行,我假设它有问题吗?
寻找解决方案以弄清楚为什么它不起作用。我查看了nodejs.org上的文档,但没有找到任何线索。
谢谢您的帮助!
答案 0 :(得分:4)
为避免路径问题,建议使用path.join
,例如:
const path = require('path');
const coolPath = path.join(__dirname, 'cool.txt');
const readableStream = fs.createReadStream(coolPath);
在上面的示例中,您正在创建指向文件的路径,该路径引用存储在名为__dirname
的全局变量中的脚本的当前目录。
答案 1 :(得分:0)
如果文件与您当前正在运行项目的目录位于同一目录中,那么您只需键入文件名即可,而不用像./或/这样在此处提供路径:
var fs = require('fs');
// Create readable stream
var readableStream = fs.createReadStream('cool.txt');
// Pipe it to out stdout
readableStream.pipe(process.stdout);
它将与从同一目录读取文件一样工作