【问题标题】:Node.js server gives problems with scripts and imagesNode.js 服务器出现脚本和图像问题
【发布时间】:2012-09-23 02:15:42
【问题描述】:

我刚开始使用 node js,我已经在上面移动了我的一个网站:

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

var app = http.createServer(function (req, res) {

    fs.readFile('./index.html', 'utf-8', function(error, content) {
        res.writeHead(200, {'Content-Type' : 'text/html'});
        res.end(content);
    });
});
app.listen(8080);

index.html 是我的网站主页。只有 html 它可以工作,但是如果我在其中添加标签(例如包括 jquery),它会在 firebug 中给出 JS 错误:未捕获的语法错误:jquery.js 中的意外令牌

我真的不需要做一些路由或使用 Express 框架或任何东西,它只是一个简单的单页网站。 我做错了什么?

【问题讨论】:

    标签: javascript jquery node.js


    【解决方案1】:

    您的服务器未处理对图像或其他资源的请求。所有请求都会得到与./index.html 页面相同的响应。

    这意味着如果页面中包含外部脚本或图像,则当浏览器对这些资源发出请求时,将改为传递原始的index.html 页面。

    NodeJS 相当低级。您需要将服务器设置为根据每个请求的 URL 手动处理不同类型资源的请求。

    最好的办法是通读一些 NodeJS 教程。它们应该涵盖提供内容的基础知识,但其中许多不会处理较低级别的细节,并且会建议 Connect 或 Express 等软件包。

    将您的代码更改为此,您将看到所有被请求的资源。

    var http    =   require('http');
    var fs      =   require('fs');
    var url     =   require('url');
    var path    =   require('path');
    
    var app = http.createServer(function (req, res) {
    
        var pathname = url.parse(req.url).pathname;
        var ext      = path.extname(pathname).toLowerCase();
    
        console.log(pathname);
    
        if (ext === ".html") {
            fs.readFile('./index.html', 'utf-8', function(error, content) {
                res.writeHead(200, {'Content-Type' : 'text/html'});
                res.end(content);
            });
        }
    });
    app.listen(8080);
    

    【讨论】:

    • 您好,感谢您的帮助;但是随着您的代码加载一段时间,然后浏览器向我发送:324(net::ERR_EMPTY_RESPONSE):我已经阅读了一个非常好的关于节点的初学者指南,但它没有涵盖这个包含的东西。至少目前我真的不想使用框架之类的东西,因为正如我所说的那样,它是一个单页网站,所以我尽量保持简洁。
    • @user1397271:它没有加载,因为上面的代码没有发送图像和脚本资源的响应。重点是表明发生的请求不仅仅是页面请求。您需要学习提供所有将被请求的内容。如果请求来自"/JS/my_js_file.js",那么您需要从文件系统中提供该文件,或者如果它不存在则发送404。所有请求的资源也是如此。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    相关资源
    最近更新 更多