var http = require('http');
var fs = require('fs');
var extfs = require('extfs');
var exec = require('child_process').execSync;
var url = require('url');
const PORT=8282;
function handleRequest(request, response){
var regex = fs.readFileSync('./output.txt', 'utf8');
var res = regex.match(/<.*class='.*(post-title).*>\n.*</g);
response.end(res);
}
var server = http.createServer(handleRequest);
server.listen(PORT, function(){
console.log("Server listening on: http://localhost:%s", PORT);
});
以上是我的Node JS Web服务器,在运行时,将启动一个临时Web服务器,侦听端口8282.
我在https://regex101.com/测试了我的正则表达式,以确保它能够正确匹配。
我的问题是当我发出GET请求时,我的网络服务器会崩溃,我得到的错误是第一个参数必须是字符串或缓冲区我明白这是由于Node的异步性质JS和response.end(res)
在上面的行完成之前先运行。
我不知道如何解决这个问题。任何建议都将不胜感激。
答案 0 :(得分:1)
不,它与异步执行无关,代码中的行是按顺序执行的。
你的问题是match()
函数返回一个字符串数组,即既不是字符串也不是缓冲区