Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js learnyounode';我的第一个I/O';例子_Node.js - Fatal编程技术网

Node.js learnyounode';我的第一个I/O';例子

Node.js learnyounode';我的第一个I/O';例子,node.js,Node.js,这个节目让我困惑。该程序的目标是计算文件中的换行数并在命令提示符下输出。然后对文件运行他们自己的检查,查看他们的答案是否与您的答案匹配 所以我从答案开始: var fs = require('fs'); var filename = process.argv[2]; file = fs.readFileSync(filename); contents = file.toString(); console.log(contents.split('\n').length - 1); lea

这个节目让我困惑。该程序的目标是计算文件中的换行数并在命令提示符下输出。然后对文件运行他们自己的检查,查看他们的答案是否与您的答案匹配

所以我从答案开始:

var fs = require('fs');

var filename = process.argv[2];

file = fs.readFileSync(filename);

contents = file.toString();

console.log(contents.split('\n').length - 1);
learnyounode验证此程序是否正确计算新行数。但是,当我将程序更改为以下任何一项时,它不会打印出与LearnyYouNode打印出的数字相同的数字

file = fs.readFileSync(C:/Nick/test.txt);
file = fs.readFileSync(test.txt);
nodejs readFileSync不应该输入地址并正确读取吗

最后,这个程序应该打印出程序中的新行。为什么每次运行此程序时,正确的程序和LearnyYouNode都会打印出与换行数量不同的相同数字

例如,test.txt中的换行数是3。但是每次运行这个程序都会打印出一个不同的数字,比如45、15、2等等。但同时,LearnyYouNode会验证它是一个正确的程序,因为它们的答案都匹配!发生了什么事

编辑: test.txt如下所示

ok
testing
123

所以,我在本地机器上试用了你的程序,你的程序运行得很好。我不是学英语的专家。我只是在你提问后试过,但我想我理解它是如何工作的。因此,以下是您问题的答案:

nodejs readFileSync不应该输入地址并正确读取吗

来自nodejs的这个方法工作得很好。您可以尝试打印文件的内容,您会发现没有问题

为什么每次运行此程序时,正确的程序和LearnyYouNode都会打印出不同于换行数的相同数字

LearnyYouNode每次都以不同的
文件名作为输入来运行您的程序。它通过对同一文件运行自己的正确代码副本来验证程序的输出

但是,当我将程序更改为以下任何一项时,它不会打印出与LearnyYouNode打印出的数字相同的数字

file = fs.readFileSync(C:/Nick/test.txt);
file = fs.readFileSync(test.txt);

这是因为此时,您的代码正在处理一个固定文件,而learnyounode在每次迭代中仍在处理不同的文件。

您应该使用以下方法来执行.js文件

node program_name.js /path/to/text_file_name
而不是

learnyounode run program_name.js /path/to/text_file_name
在此方法中,Node.js将使用您在命令行界面上输入的指定文件运行您的程序


希望这个答案能帮助你编程。:)

有两种不同的方法。 如果您运行以下程序:

node program_name.js 
然后需要将路径添加到文本文件:

node program_name.js text_file.txt
在这种情况下,请确保文件位于同一目录中

或者,您可以使用以下命令运行它:

learnyounode program_name.js 
默认文本文件将由learnyounode提供。您可以使用查看此文本文件的内容

console.log(buffer)

这也把我绊倒了。如果你仔细阅读learnyounode说明,他们会明确地说

“要读取的文件的完整路径将作为第一个命令行参数提供。”

这意味着他们正在提供自己文件的路径。

使用
process.argv[2]
时,这会将第三个数组项(learnyonode测试txt文件)传递到脚本中。如果运行
console.log(process.argv)您将看到完整的数组对象如下所示:

[ '/usr/local/bin/node',
  '/Users/user/pathstuff/learnyounode/firstio.js',
  '/var/folders/41/p2jvc80j26l7nty0sk0zs1z40000gn/T/_learnyounode_1613.txt' ]
当您用自己的文本文件替换验证号时,验证号开始不匹配的原因是您的文件始终有3行,而它们的单元测试通过
process.argv
传递不同长度的文件


希望这能有所帮助。

问题陈述说

要读取的文件的完整路径将作为第一个路径提供 命令行参数

因此,必须将
路径/to/file
作为参数传递


请记住,当您在LearnyYouNode中使用process.argv[2]时,参数是由LearnyYouNode自动提供的,因此它会在多次验证时打印不同数量的行,如45、15、2等。
如果您还记得第二个挑战“BABYSTEPS”,请仔细阅读:

运行时,learnyounode将为程序提供参数
LearnyYouNode验证program.js,这样您就不需要自己提供它们了


这就是为什么在program.js上多次验证不同的行号

要不要给我们看看你的test.txt文件?另外,您是如何确定test.txt中的换行数是3的?这只是一个假设的答案。我真正想弄明白的是,为什么新行的数量从45、15、2一直在变化。。对于我的程序和LearnyYounode。我将添加我的txt文件看起来像什么。k,所以你会得到不同的数字为同一个测试文件。听起来确实很奇怪。让我在本地运行你的程序来确认这一点。我尝试了大约10次,它成功地验证了我的代码。这并没有回答问题,而是提供了一个执行程序的方法。但问题是不同的