html - Nodejs : Served html page not linked to css

标签 html css node.js

我在nodejs中运行以下基本脚本来提供带有关联CSS样式表的html文件:

var http = require('http');
var fs = require('fs');
var path = require('path');

var serverPort = 8080;

var server = http.createServer(function(request, response) {

console.log('request starting ...');
var extname = path.extname(request.url);

var contentType = 'text/html';
    switch (extname) {
    case '.js':
        contentType = 'text/javascript';
        break;
    case '.css':
        contentType = 'text/css';
        break;
    }

fs.readFile('js/EmailDisplay/htm/index.html', function(error, content) {
    if (error) {
        console.log(error);
        response.writeHead(500);
        response.end();
    } else {
        console.log(contentType);
        response.writeHead(200, {'Content-Type': contentType});
        response.end(content,'utf-8');
    }
});
});

server.listen(serverPort);
console.log('Server running at localhost:' + serverPort +"/");

如果我在 Firefox 中打开该文件(文件 -> 打开文件),它会正确呈现。如果我转到 localhost:8080,则会提供索引页面,但没有应用样式。为什么? fs.readFile block 中的 console.log 显示两个文件都正在被读取。

PS - 我知道有些软件包可以让我盲目地执行此操作(例如“连接”),但我试图在走这条路线之前了解实际发生的情况。

最佳答案

问题可能出在这一行:

 fs.readFile('js/EmailDisplay/htm/index.html', function(error, content) {

即使请求 .js.css,您也会读取并向客户端返回相同的 html 文件。

您可能应该在代码前面的开关中设置文件的路径及其内容类型。

关于html - Nodejs : Served html page not linked to css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12302368/

相关文章:

jquery - 日期输入永不为空

javascript - 如何跟踪打开的选项卡并在其关闭后执行某些操作?

javascript - 如何知道将带有文件的表单提交到 iframe 是否失败

html - 缩放时导航栏移动

CSS 属性及其对性能的影响?

javascript - Node.js Heroku App 应用程序错误。日志有问题

javascript - 如何清除 HTML5 canvas 中的圆弧或圆?

css - 可滚动的东西在 firefox 上工作正常但在 chrome 上不行

javascript - 无法读取未定义的属性“主体”

javascript - 前端库智能解析 "Collection+JSON"