Roe*_*ker 6 javascript filesystems fs node.js
我在我的节点中收到以下错误,无法弄清楚原因:
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
Run Code Online (Sandbox Code Playgroud)
我很确定它与我使用的异步npm软件包无关,因为我在开始使用之前遇到了同样的错误.
这是代码:
function getSeries() {
JSON.parse(fs.readFileSync('updates.json', function(err,data) {
if (err) {
console.error(err);
}
else {
var json = data;
}
}));
Run Code Online (Sandbox Code Playgroud)
Far*_*hat 12
您正在以错误的方式混合异步和同步.你混淆了不同的东西.
你的代码应该像这样(同步):
try {
var json = JSON.parse(fs.readFileSync('updates.json'));
} catch (err) {
console.error(err);
}
Run Code Online (Sandbox Code Playgroud)
或异步:
fs.readFile('updates.json', function(err,data) {
if (err) {
console.error(err);
}
else {
var json = JSON.parse(data);
}
});
Run Code Online (Sandbox Code Playgroud)
差异在于fs.readFile(docs)期望回调并通过调用给定的回调给出错误/结果.它没有返回任何东西.
并且fs.readFileSync(docs)不接受回调,因为它是同步的并且它返回结果或抛出错误.
此外,如果您正在.json静态解析,您可以使用require:
var json = require('./updates')
Run Code Online (Sandbox Code Playgroud)
请注意,require函数将缓存它的输出,并且在后续运行中它将返回相同的对象而不会阻塞或执行任何IO.
| 归档时间: |
|
| 查看次数: |
8322 次 |
| 最近记录: |