如何使用Node js将图像和javascript文件发送到浏览器

如何使用Node js将图像和javascript文件发送到浏览器,javascript,html,node.js,express,http-status-code-404,Javascript,Html,Node.js,Express,Http Status Code 404,我创建了一个Node.js服务器,当Javascript是HTML页面的一部分时,该服务器运行良好。我将JS移动到另一个文件并添加了一些图像。现在它不会将图像或JS加载到浏览器中。然而,当我直接打开网页时,网页呈现得非常完美。这就是我的服务器的外观: app.get('/',function(req,res){ res.end('Hello World!Go to /map to see the google map'); }); app.get('/map',function(req,

我创建了一个Node.js服务器,当Javascript是HTML页面的一部分时,该服务器运行良好。我将JS移动到另一个文件并添加了一些图像。现在它不会将图像或JS加载到浏览器中。然而,当我直接打开网页时,网页呈现得非常完美。这就是我的服务器的外观:

app.get('/',function(req,res){
    res.end('Hello World!Go to /map to see the google map');
});
app.get('/map',function(req,res){
    var conn;
    //images must be sent to the client from the server...
    res.sendfile(__dirname+'/client/google_maps.html');
    //receiving requests from jQuery 
});

我没有使用Express项目结构或Express中间件或Express配置来完成此操作。

如果这是您的全部代码,我认为您遇到的问题是合理的。当浏览器请求时,您并没有告诉服务器如何响应图像和脚本。例如,在您的
google_map.html
文件中,您的浏览器将要求您的节点应用程序提供
myjs.js
的内容,但您的服务器不知道如何处理它

您可以尝试添加如下代码,看看是否有帮助

app.get('/myjs.js', function (req, res) { res.sendfile(__dirname + '/myjs.js'); }); app.get('/myjs.js',函数(req,res){ res.sendfile(uu dirname+'/myjs.js'); }); 正如dimadima所说,Express提供了一个模块来处理静态文件,您可以像

app.use(express.static(__dirname + '/public')); app.use(express.static(uu dirname+/public));
“然而,当我直接打开网页时,网页呈现得非常完美。”与您之前写的相比,这意味着什么?看起来您没有为图像和JS文件定义路由,而只为HTML文件定义路由从本例中,因为它没有被使用,而且只有云图片。考虑使用Express /Connect <代码>静态< /COD>中间件来为您的静态文件服务:@ DimaDima,我的意思是当我右击文件并在谷歌浏览器< /CODE >中说<代码>打开时,它工作。当我创建服务器时,我仍然在测试代码,没有添加任何图像或重构。
js
到一个单独的文件中当您从文件系统中为该文件提供服务器时,您的浏览器会向文件系统请求js文件和图像,而您的文件系统会同意。但是您的节点服务器中没有JS和图像的路由,因此您的节点服务器不知道如何为这些图像提供服务。所以它是404,因为它知道的所有路由都与请求不匹配。