Node.JS fs.readFileSync() 错误参数
Posted
技术标签:
【中文标题】Node.JS fs.readFileSync() 错误参数【英文标题】:Node.JS fs.readFileSync() bad arguments 【发布时间】:2014-07-12 14:35:48 【问题描述】:我的节点出现以下错误,但不知道原因:
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;
));
【问题讨论】:
【参考方案1】:您以一种糟糕的方式混合了异步和同步。你混淆了不同的东西。
您的代码应该是这样的(同步):
try
var json = JSON.parse(fs.readFileSync('updates.json'));
catch (err)
console.error(err);
或异步:
fs.readFile('updates.json', function(err,data)
if (err)
console.error(err);
else
var json = JSON.parse(data);
);
不同之处在于fs.readFile
(docs) 需要回调,并会通过调用给定的回调为您提供错误/结果。它不返回任何东西。
而fs.readFileSync
(docs) 不接受回调,因为它是同步的,它返回结果或抛出错误。
另外,如果你是静态解析.json
,你可以使用require
:
var json = require('./updates')
请注意,require
函数将缓存它的输出,并在随后的运行中返回相同的对象,而不会阻塞或执行任何 IO。
【讨论】:
谢谢法里德!陛下,我现在可以修好了。 太棒了!我从来没有听说过readFile
和readFileSync
。以上是关于Node.JS fs.readFileSync() 错误参数的主要内容,如果未能解决你的问题,请参考以下文章
[Node.js] Read a File in Node.js with fs.readFile and fs.readFileSync
Node JS readFileSync严格模式下不允许八进制转义序列