这是我在这里的第一篇文章,所以如果我犯了错误,我道歉。
尝试在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)
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的信息
根据Node.js文档,您必须为fs.writeFile
提供回调函数。
参考:https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback