我得到一个fs.js:347新的TypeError('坏论点');

我试图按照Node.js创build一个路由器的教程。 这是路由器的代码

var http = require("http"); var url = require('url'); var fs = require('fs'); var server = http.createServer(function(request, response){ console.log('Connection'); var path = url.parse(request.url).pathname; switch(path){ case '/': response.writeHead(200, {'Content-Type': 'text/html'}); response.write('hello world'); break; case '/socket.html': fs.readFileSync(__dirname + path, function(error, data){ if (error){ response.writeHead(404); response.write("opps this doesn't exist - 404"); } else{ response.writeHead(200, {"Content-Type": "text/html"}); response.write(data, "utf8"); } }); break; default: response.writeHead(404); response.write("opps this doesn't exist - 404"); break; } response.end(); }); server.listen(8001); 

当我访问http:/本地主机:8001 / socket.html,我在我的浏览器中得到一个空白的屏幕,我的terminal说

 Connection fs.js:347 throw new TypeError('Bad arguments'); ^ TypeError: Bad arguments at Object.fs.readFileSync (fs.js:347:11) at Server.<anonymous> (/Users/Vik/Desktop/NodeJS/routingToDifferentUrls.js:15:20) at Server.emit (events.js:110:17) at HTTPParser.parserOnIncoming [as onIncoming] (_http_server.js:491:12) at HTTPParser.parserOnHeadersComplete (_http_common.js:111:23) at Socket.socketOnData (_http_server.js:343:22) at Socket.emit (events.js:107:17) at readableAddChunk (_stream_readable.js:163:16) at Socket.Readable.push (_stream_readable.js:126:10) at TCP.onread (net.js:529:20) 

然后退出。

任何人都可以请解释为什么我得到这个错误? 是的,我已经创build了我的socket.html文件,它只显示简单的文字“这是我们的socket.html文件”。

提前感谢一切帮助!

那么它看起来像你正在使用asynchronous的fs.readFile 。 所以response.end()在完成之前被调用。因此你的错误信息write after end你确实想用fs.readFileSync来获取socket.html的内容。 像var data = fs.readFileSync.(__dirname + path)