2

関連するcssスタイルシートを含むhtmlファイルを提供するために、nodejsで次の基本的なスクリプトを実行しています。

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 ブロックの console.log は、両方のファイルが読み取られていることを示しています。

PS - これをやみくもに実行できるパッケージ (「接続」など) があることは知っていますが、そのルートに進む前に、実際に何が起こっているのかを理解しようとしています。

4

2 に答える 2

0

nodejsとexpressでこの同じ問題に遭遇しました。server.js以下の私のサンプルを参照してください

var express= require("express");
var app= express();
app.get("/", function(request, response) {
    response.sendFile("testing.html", {root: "."});
});
app.listen(8080);

次の行を含めることで、静的コンテンツを追加できます。

app.use(express.static("foundation-5.4.6", {index: false}));

これはexpress.staticを使用します。私の場合、Foundationpublicフレームワークから静的な css と js を提供していますが、これを特定のフォルダーに簡単に変更できます。

于 2014-11-12T15:06:19.983 に答える