Node.JS fs.readFileSync()错误的参数

我在我的节点中得到以下错误,不知道为什么:

TypeError: Bad arguments at Object.fs.readFileSync (fs.js:277:11) at getSeries (/Users/user/tv/final.js:57:16) at /Users/user/tv/final.js:89:4 at /Users/user/tv/node_modules/async/lib/async.js:610:21 at /Users/user/tv/node_modules/async/lib/async.js:249:17 at iterate (/Users/user/tv/node_modules/async/lib/async.js:149:13) at /Users/user/tv/node_modules/async/lib/async.js:160:25 at /Users/user/tv/node_modules/async/lib/async.js:251:21 at /Users/user/tv/node_modules/async/lib/async.js:615:34 at /Users/user/tv/final.js:86:4 

我很确定它与我使用的async npm软件包没有任何关系,因为我在开始使用它之前得到了同样的错误。

这里是代码:

  function getSeries() { JSON.parse(fs.readFileSync('updates.json', function(err,data) { if (err) { console.error(err); } else { var json = data; } })); 

你正在以不好的方式混合asynchronous和同步。 你混淆了不同的东西。

你的代码应该是这样(同步):

 try { var json = JSON.parse(fs.readFileSync('updates.json')); } catch (err) { console.error(err); } 

或asynchronous:

 fs.readFile('updates.json', function(err,data) { if (err) { console.error(err); } else { var json = JSON.parse(data); } }); 

不同之处在于fs.readFile ( docs )需要一个callback函数,并通过调用给定的callback函数给出错误/结果。 它不会返回任何东西。

fs.readFileSync ( docs )不接受callback,因为它是同步的,它返回结果或抛出错误。

另外,如果您正在静态parsing.json ,则可以使用require

 var json = require('./updates') 

请注意, require函数将caching它的输出,并在后续运行时将返回相同的对象,而不会阻塞或做任何IO。