fs.createReadStream 没有找到文件

fs.createReadStream is not finding file

我现在正在学习 Node.js,使用 "Beginning Node.js" 教科书。

书中的例子在命令提示符下没有正确执行。 (我正在使用 Ubuntu 18.04 和 Node v9.4.0,这本书已经三年了,所以这可能是相关的?)

在本书的可下载源代码中,这是提供的代码:

var fs = require('fs');

// Create readable stream
var readableStream = fs.createReadStream('./cool.txt');

// Pipe it to out stdout
readableStream.pipe(process.stdout);

文件 cool.txt 在父目录中。

--父文件夹

----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 上的文档,但没有找到任何线索。

感谢您的帮助!

为避免路径问题,建议使用path.join,例如:

const path = require('path');

const coolPath = path.join(__dirname, 'cool.txt');
const readableStream = fs.createReadStream(coolPath);

在上面的示例中,您正在创建一个指向文件的路径,该文件引用存储在名为 __dirname.

的全局变量中的脚本的当前目录

如果该文件位于您当前所在的同一目录中 运行 您的项目,那么您只需键入文件的名称,而不是像 ./ 或 / 那样给它路径:

var fs = require('fs');

// Create readable stream
var readableStream = fs.createReadStream('cool.txt');

// Pipe it to out stdout
readableStream.pipe(process.stdout);

它将像从同一目录读取文件一样工作