Node.js阻止Bootstrap?

我对Node.js和JavaScript一般都很新,但我想用尽可能少的开销建立一个网站。

我想用Node.js和Bootstrap来实现这一点。

这是我的server.js文件:

var http = require('http'); var fs = require("fs"); http.createServer( //This function decides which content type to use for wich type of request. //This is also used to restrict the type of files that a user is allowoed to request. function(request, response) { //For debugging console.log(request.connection.remoteAddress.toString() + " requested the url " + request.url.toString()); if(/^\/[a-zA-Z0-9\/]*.css$/.test(request.url.toString())){ //Send the requested file if it end with .css sendFileContent(request, response, request.url.toString().substring(1), "text/css"); } else if(/^\/[a-zA-Z0-9\/]*.js$/.test(request.url.toString())){ //Send the requested file if it end with .js sendFileContent(request, response, request.url.toString().substring(1), "text/javascript"); } else { //Answer any other request with the index.html file, because this is a single page application. sendFileContent(request, response, "index.html", "text/html"); } } ).listen(80); function sendFileContent(request, response, fileName, contentType){ fs.readFile(fileName, function(err, data){ if(err){ response.writeHead(404); //TODO: Better 404 page! response.write("Not Found!"); console.log(request.connection.remoteAddress.toString() + " received a 404 error"); } else{ response.writeHead(200, {'Content-Type': contentType}); response.write(data); } response.end(); }); } 

它运作良好。 如果我将一个脚本添加到html文档中,例如,在其中使用document.write() ,它将显示在页面上。 现在对于Bootstrap,我看到你只需要四个文件,通常是通过CDN或webpack或bower等工具提供的。 所以我刚刚下载了四个文件bootstrap.min.js,bootstrap.min.css,jquery.min.jspopper.js ,并将它们放在其余文件旁边的脚本文件夹中。 当然,我使用一个相对路径,如scripts/bootstrap/js/bootstrap.min.js而不是CDN链接。

运行Node.js服务器时,我可以看到文件被请求并成功发送 ,但不知何故引导外观(但一切都可见)。

这是我正在使用的HTML文档(index.html):

    Index            

现在,这是一个奇怪的部分:手动打开index.html文件会导致所有引导元素的正确显示。 这就是为什么我总结它与Node.js有关。

有谁知道如何解决这一问题?

你的正则表达式与你的CSS文件名不匹配,所以它提供index.html而不是实际的CSS。

因为您使用的是.min.css文件,所以需要查找. 在文件名中,除了扩展名之外:

 if(/^\/[a-zA-Z0-9\/.]*.css$/.test(request.url.toString())){ // ^ 

这同样适用于您的JavaScript。