process.argv的不同行为

时间:2014-12-30 07:48:54

标签: node.js

我是节点js的新手,只是尝试完成learnyounode研讨会

当我通过" node filename.js"运行以下代码时它给了我错误

fs.js:418
  binding.open(pathModule._makeLong(path),
          ^
TypeError: path must be a string

但它与#34; learnyounode运行filename.js"

一起工作正常
var fs = require('fs')
        var file = process.argv[2]

        fs.readFile(file, function (err, contents) {
          // fs.readFile(file, 'utf8', callback) can also be used
          var lines = contents.toString().split('\n').length - 1
          console.log(lines)
        })

代码有什么问题

1 个答案:

答案 0 :(得分:1)

learnyounode run filename.js运行node filename.js {{fileToBeRead}},也就是说你需要给它一个命令行参数或者process.argv [2]将是未定义的,这会导致fs.readFile(undefined, . . .抛出错误。