试图响应从node.js http服务器中分割成单词数组的文本

Trying to respond with text split into array of words from node.js http server

本文关键字:分割 单词 数组 文本 服务器 响应 node http js      更新时间:2023-09-26

node.js新手,感谢您提供的所有帮助。试图响应变量"单词",但当我启动服务器并转到本地主机时,它崩溃并说"TypeError:第一个参数必须是字符串或缓冲区",但当我尝试将相同的变量写入控制台时,它会起作用。谢谢你的帮助!

var http = require("http");
var fs = require('fs');
var text = fs.readFileSync("text.txt").toString();
var words = text.split(/'b/);
function start(){
function onRequest(request, response){
    response.writeHead(200, {"Content-type": "text/plain"});
    var wordCounts = '';
    for(var i = 0; i < words.length; i++)
    wordCounts["_" + words[i]] = (wordCounts["_" + words[i]] || 0) + 1;
        response.write(words);
    response.end();
}
http.createServer(onRequest).listen(8888);
console.log("server has started");
}
exports.start = start;

我想这样做:

…
var words = text.split(/'s+/); // you hardly want to split on every word boundary
                               // but rather on the spaces in between
…
    var wordCounts = {}; // an object, not a string!
    for (var i = 0; i < words.length; i++)
        wordCounts["_" + words[i]] = (wordCounts["_" + words[i]] || 0) + 1;
    var result = Object.keys(wordCounts).sort(function(a, b) {
        return wordCounts[b]-wordCounts[a];
    }).map(function(w) {
        return w.slice(1)+": "+wordCounts[w];
    }).join("'n");
    response.write(result); // write a string!
…

控制台对此没有问题,因为它会自动将您放入console.log()的大多数内容字符串化。试试这个:response.write(JSON.stringify(words))