首页 > 解决方案 > `TypeError [ERR_INVALID_CALLBACK] 中的理解问题:回调必须是节点中的函数

问题描述

我是节点新手,并且无法TypeError [ERR_INVALID_CALLBACK]: Callback must be a function通过运行命令来理解为什么会发生此错误node file-create-directory.js

file-create-directory.js文件是:

const fs = require('fs');
if(!fs.exists('views')){
  fs.mkdir('views',(err) =>{
    if(err) return err;
    fs.writeFile('./views/new.html','this is a new directory and data', (err) =>{
       if(err) return err;
        console.log('Directory and file saved');
    });
  });    
}

标签: node.js

解决方案


首先fs.exists是弃用

const fs = require('fs');
fs.access('views', fs.constants.F_OK, (err) => {
  // if it does not exists
  if(err) {
     fs.mkdir('views', (err) => {
       if(!err) { 
         fs.writeFile('./views/new.html', 'this is a new directory and data', 
         (err) => {
           if(err) return err;
           console.log('Directory and file saved');
         }
     });
  }
});    

但是如果你决定fs.exists使用这个

fs.exists('views', (exists) => {
  if(!exists) {
     fs.mkdir('views',(err) => {
       if(err) return err;
       fs.writeFile('./views/new.html','this is a new directory and 
       data', (err) => {
         if(err) return err;
         console.log('Directory and file saved');
       });
     });  
  }
});

推荐阅读