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

问题描述 投票:-1回答:2

这是我在这里的第一篇文章,所以如果我犯了错误,我道歉。

尝试在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)
javascript node.js require
2个回答
0
投票

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

来自docs的示例用法:

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);

callback上阅读更多关于MDN的信息


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.