css没有在nodejs web app中呈现

时间:2018-04-10 08:22:46

标签: javascript css node.js server

我已经整理了一个小应用程序并使用html,css和javaScript。现在我想在nodejs服务器上运行它。我已经为服务器创建了一个单独的文件,以便使用以下代码开始运行。

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

function onRequest(request, response) {
response.writeHead(200, {'Content-Type': 'text/html'});
fs.readFile('./index.html', null, function(error, data) {
    if (error) {
        response.writeHead(404);
        response.write('File not found');
    } else {
        response.write(data);
    }
    response.end();
  });

}

http.createServer(onRequest).listen(3000, function(){
console.log("The server has started");
});

现在html正在渲染,但CSS没有渲染。另外,链接到html的JavaScript无效。我确实看到了Nodejs static file。但这似乎没有意义。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

你(有点)必须使用静态文件。因为在您的示例中,即使请求了CSS或JS文件,也始终发送index.html文件。

下面是一个快递(几乎等于http)的例子

var express = require('express');
var path = require('path');

var app = express();

app.use(express.static(path.join(__dirname, RELATIVE_CLIENT_WEBSITE_DIR_WHERE_INDEX_FILE_IS)));

app.listen(PORT);

答案 1 :(得分:1)

没有表达,我写了一个小模块:

 var fs = require('fs');
module.exports = {
    getFile: function(url) {
        var text = '404';
        try {
            url = url.split('?')[0];
            if (url === '/') {
                url = '/index.html';
            }
            text = fs.readFileSync('./public' + url);
            if (url === '/index.html') {
                text = text.toString().replace(/version=/g, "version=" + Date.now());
            }
            return text;
        } catch (e) {
            return text + ' ' + e;

        }
    }
};

- 是route.js,在这个文件中我收到了文件夹' public'与css,js等。 index.js:

var http = require("http");
var route = require('./route');

var html; 

     function onRequest(request, response) {
          if (request.method === 'GET') {
                response.writeHead(200);
                response.write(route.getFile(request.url));
                response.end('');
            } 
        }
        http.createServer(onRequest).listen(8888);
        console.log("Server has started.");

' index.html'的例子:

<!DOCTYPE html>
<html>

<head>
    <link rel="stylesheet" type="text/css" href="style.css?version=">
    <title>test table</title>
</head>

<body>

    <div contenteditable="true">
        Example
    </div>
    <script src="js/table_creator.js?version="></script>
    <script src="js/table_controller.js?version="></script>
    <script src="js/table_size.js?version="></script>
    <script src="js/table_core.js?version="></script>
    <script src="js/index.js?version="></script>
</body>

</html>

publick文件夹: files in public folder

服务器文件系统: server file system