如何解决此错误TypeError [ERR_INVALID_CALLBACK]:回调必须是一个函数

时间:2018-07-03 09:23:49

标签: node.js

我是nodejs的初学者。当我在下面键入以下代码时,将发生此类TypeError [ERR_INVALID_CALLBACK]的代码错误:回调必须是一个函数

var fs = require('fs');
    fs.readFile('readMe.txt', 'utf8', function (err, data) {
      fs.writeFile('writeMe.txt', data);
    });

7 个答案:

答案 0 :(得分:17)

根据文档here

Fs.writeFile()需要( 文件,数据[,选项]和回调)参数,因此您的代码将如下所示:

 var fs = require('fs');
 fs.readFile('readMe.txt', 'utf8', function (err, data) {
  fs.writeFile('writeMe.txt', data, function(err, result) {
     if(err) console.log('error', err);
   });
 });

答案 1 :(得分:4)

从节点10开始,必须在fs.writefile()上传递回调

Node.js记录了更改的目的:https://github.com/nodejs/node/blob/master/doc/api/deprecations.md#dep0013-fs-asynchronous-function-without-callback

您可以像这样fs.writeFile('writeMe.txt', data, () => {})

添加一个空的回调

答案 2 :(得分:3)

fs.writeFile(...)需要第三个(或第四个)参数,该参数是在操作完成时要调用的回调函数。您应该提供回调函数或使用fs.writeFileSync(...)

有关更多信息,请参见node fs docs

答案 3 :(得分:2)

您也这样使用

var file2 = await fs.readFileSync("./Public/n2.jpeg")

答案 4 :(得分:0)

当我执行以下操作时,这个错误使我感到震惊;

var hello = myfunction( callme() );

而不是

var hello = myfunction( callme );

答案 5 :(得分:0)

var fs = require('fs');

fs.readFile('readme.txt', 'utf8', function(err, data) {
    fs.writeFile('writemeee.txt', data, function(err, result) {

        if (err) console.log('error', err);

    });
});

答案 6 :(得分:0)

您只需使用同步功能

var fs = require('fs');
fs.readFileSync('readMe.txt', 'utf8', function (err, data) {
  fs.writeFileSync('writeMe.txt', data);
});

或者使用回调函数