如何使用 vanilla JavaScript 将读取的文本文件内容发送给 Node.js 中的客户端?
How to send read txtFile content to client in Node.js with vanilla JavaScript?
我正在尝试从我的 server.js 文件中获取 txt 文件中的一些数据,但我不确定如何获取该数据。
server.js:
const server = http.createServer((req, res) => {
const { method, url } = req;
res.status = 200;
res.setHeader("Content-type", "text/json");
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "*");
res.setHeader("Access-Control-Allow-Headers", "*");
if (url === "/view-stuff" && method === "GET") {
console.log("RECIEVED GET REQ");
let stuffReturned= fs.readFile("string.txt", (err, data) => {
if (err) {
throw err;
} else {
return data;
}
});
res.writeHead(200, { "Content-Type": "text/plain" });
res.write(stuffReturned);
}
res.end();
});
client.js:
function getStuffToview(){
const request = new XMLHttpRequest();
request.open("GET", "//localhost:1000//view-stuff", true);
request.addEventListener("load", function () {
try {
console.log(this.responseText);
} catch (e) {
console.log(request.status);
}
});
request.send();
});
}
我知道它在某种程度上起作用了,因为我的控制台正在记录“RECEIVED GET REQ”。但是,在记录之后我收到此错误:
TypeError [ERR_INVALID_ARG_TYPE]: The "chunk" argument must be of type string or an instance of Buffer or Uint8Array. Received undefined.
我试过 res.send(stuffReturned)
,但它只是说“res.send(stuffReturned)”不是函数。
fs.readFile()
是一个读取文件内容的异步函数。它没有 return 任何东西。
fs.readFileSync()
是同步读函数。它 return 是正在读取的文件的内容。
两者之间的区别在于,fs.readFileSync
会阻止其他操作,直到读取完成并 returned 内容,而 fs.readFile
异步执行此操作,允许其他操作在分块读取文件时完成。
Node.JS 还包括 Promise 版本的文件系统方法,例如 filehandle.readFile()
。您可以像这样使用它们:
const fs = require("fs/promises");
(async () => {
const stuffReturned = await fs.readFile("string.txt");
console.log(stuffReturned); // the contents of the file
});
我正在尝试从我的 server.js 文件中获取 txt 文件中的一些数据,但我不确定如何获取该数据。
server.js:
const server = http.createServer((req, res) => {
const { method, url } = req;
res.status = 200;
res.setHeader("Content-type", "text/json");
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "*");
res.setHeader("Access-Control-Allow-Headers", "*");
if (url === "/view-stuff" && method === "GET") {
console.log("RECIEVED GET REQ");
let stuffReturned= fs.readFile("string.txt", (err, data) => {
if (err) {
throw err;
} else {
return data;
}
});
res.writeHead(200, { "Content-Type": "text/plain" });
res.write(stuffReturned);
}
res.end();
});
client.js:
function getStuffToview(){
const request = new XMLHttpRequest();
request.open("GET", "//localhost:1000//view-stuff", true);
request.addEventListener("load", function () {
try {
console.log(this.responseText);
} catch (e) {
console.log(request.status);
}
});
request.send();
});
}
我知道它在某种程度上起作用了,因为我的控制台正在记录“RECEIVED GET REQ”。但是,在记录之后我收到此错误:
TypeError [ERR_INVALID_ARG_TYPE]: The "chunk" argument must be of type string or an instance of Buffer or Uint8Array. Received undefined.
我试过 res.send(stuffReturned)
,但它只是说“res.send(stuffReturned)”不是函数。
fs.readFile()
是一个读取文件内容的异步函数。它没有 return 任何东西。
fs.readFileSync()
是同步读函数。它 return 是正在读取的文件的内容。
两者之间的区别在于,fs.readFileSync
会阻止其他操作,直到读取完成并 returned 内容,而 fs.readFile
异步执行此操作,允许其他操作在分块读取文件时完成。
Node.JS 还包括 Promise 版本的文件系统方法,例如 filehandle.readFile()
。您可以像这样使用它们:
const fs = require("fs/promises");
(async () => {
const stuffReturned = await fs.readFile("string.txt");
console.log(stuffReturned); // the contents of the file
});