const fs = require(“ fs”)在Node js上无法正常工作

时间:2019-03-31 15:06:01

标签: javascript node.js require

这是我在这里的第一篇文章,因此如果出现错误,我深表歉意。

在Node js中尝试使用const fs = require(“ fs”)时遇到问题。 Visual Studio代码IDE无法识别它是已分配的,并且当我尝试使用fs.writeFile时出现错误。

我已经尝试过在线查找,但是找不到任何解决方案。我是编码新手,不胜感激。

const http = require("http");
const fs = require("fs");

const server = http.createServer((req, res) => {
  const url= req.url;

  const method = req.method;
  if (url === "/") {
    res.write("<html>");
    res.write("<head><title>Enter Message</title></head>");
    res.write("<body><form action='/message' method='POST'><input type='text' name='message'><button type='submit'>Enter</button></input></form>");
    res.write("</html>");
    return res.end();
  }
  if (url === "/message" && method === "POST") {
    fs.writeFile("message.txt", "DUMMY");
  }
  res.setHeader("content-type", "text/html");
  res.write("<html>");
  res.write("<head><title>My First Page</title></head>");
  res.write("<body><h1>Hello From My Node Js Server!!!!</h1></body>");
  res.write("<html>");
});

我希望在运行程序时将伪文本写入文件,但是我只会遇到以下错误。

TypeError [ERR_INVALID_CALLBACK]: Callback must be a function
    at maybeCallback (fs.js:128:9)
    at Object.writeFile (fs.js:1158:14)
    at Server.http.createServer (C:\Users\garry\Documents\Eloquent Javascript\Practice\practice.js:15:8)
    at Server.emit (events.js:189:13)
    at parserOnIncoming (_http_server.js:676:12)
    at HTTPParser.parserOnHeadersComplete (_http_common.js:109:17)

2 个答案:

答案 0 :(得分:0)

根据Node.js文档,您必须向fs.writeFile提供回调函数。

参考:https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback

答案 1 :(得分:0)

writeFile的方法签名为fs.writeFile(file, data[, options], callback),表示它需要4个参数,一个是可选的; options,而您的最后一个参数应为callback function。回调的签名为callback(err),这意味着如果函数writeFile在编写时遇到错误,则传递给您的回调函数应使用第一个参数来处理错误。如果没有错误,则err将是null

文档中的示例用法:

fs.writeFile('message.txt', data, (err) => {
  // check if there is error
  if (err) throw err;
  console.log('The file has been saved!');
});

在您的通话中,该方法缺少最后一个callback function参数 fs.writeFile("message.txt", "DUMMY" // , missing);可以传入自定义函数,例如:

function writeSuccess(err) {
  // check if there is error
  if (err) console.error(err);
  else console.log('write success');
}

fs.writeFile("message.txt", "DUMMY", writeSuccess);

MDN上了解有关callback的更多信息