путь должен быть строкой или буфером - PullRequest
0 голосов
/ 28 июня 2018

Сейчас я изучаю NodeJS из nodechool.io, а третье упражнение касается файла ввода-вывода.

Он просит меня написать программу, использующую одну синхронную операцию с файловой системой, для чтения файла и вывода количества строк в консоль (stdout). Полный путь к файлу для чтения будет указан в качестве первого аргумента командной строки (т.е. process.argv [2]).

Ответ на это упражнение похож на мой, поэтому я действительно знаю, где я ошибся. Это мое решение:

var fs = require('fs');

var contents = fs.readFileSync(process.argv[2]);
var strs = contents.toString();
var lines = strs.split('/n').length - 1;

console.log(lines);

но я получил ошибку:

TypeError: path must be a string or Buffer
    at Object.fs.openSync (fs.js:660:18)
    at Object.fs.readFileSync (fs.js:565:33)
    at Object.<anonymous> (D:\projects\dmt-node-study\first-io.js:3:19)
    at Module._compile (internal/modules/cjs/loader.js:654:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:665:10)
    at Module.load (internal/modules/cjs/loader.js:566:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:506:12)
    at Function.Module._load (internal/modules/cjs/loader.js:498:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:695:10)
    at startup (internal/bootstrap/node.js:201:19)

1 Ответ

0 голосов
/ 28 июня 2018

app.js

var fs = require('fs');
var contents = fs.readFileSync(process.argv[2]);
var strs = contents.toString();
var lines = strs.split('\n').length - 1;
console.log(lines);

Запуск кода из командной строки

>node app test.txt

Учитывая, что текстовый файл находится в корневом каталоге вашего проекта.

...