Node JS - HTML路径

7

我最近遇到了一个问题,就是不知道在Node.js中如何使用HTML路径。我按照通常的方式将index.html文件中的脚本链接到相对于index.html文件的位置(Node.js文件和index.html文件在同一个目录下“res.sendFile(__dirname + '/index.html');”)。但是,如果我使用Node.js在浏览器中打开它,它会显示“无法获取blabla”的错误信息。而如果我直接点击index.html文件而不使用Node.js,则这些路径可以正常工作!那么,在Node.js中,我应该如何编写HTML路径呢?

var express = require('express'),
    app = express(),
    server = require('http').createServer(app),
    io = require('socket.io').listen(server),
    port = Number(process.env.PORT || 3000),

server.listen(port);

app.get('/', function(req, res){
    res.sendFile(__dirname + '/index.html');
});

感谢您的时间! :)

这段代码在我的电脑上可以运行。或许是权限出了问题? - SCaffrey
5个回答

3

看这个:

app.get('/', function(req, res){
    res.sendFile(__dirname + '/index.html');
});

您已经告诉Node:“当浏览器请求/时,请提供index.html”。

当浏览器请求someScript.js时会发生什么?

那时,您还没有告诉Node该怎么做。

(您可能需要找一个用于提供静态文件的库,而不是单独处理每个文件)。


0

你可以使用

app.use(express.static(path.join(__dirname, "folder-name")));

0
通常我会把所有的静态文件放在一个名为“assets”的单独文件夹中,然后设置一个静态路由如下所示:输入代码

app.use('/assets', express.static('assets'));


0

你应该配置Express来提供静态文件,例如,将所有静态文件放在一个名为“public”的目录下。

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

// viewed at http://localhost:8080
app.get('/', function(req, res) {
    res.sendFile(path.join(__dirname + '/index.html'));
});

app.listen(8080);

ExpressJS 传递 HTML 文件

在 ExpressJS 中呈现 HTML 文件


-1

当你写下:

app.get('/', function(req, res){
    res.sendFile(__dirname + '/index.html');
});

它只会提供index.html文件,而不是您在html中添加的其他js脚本和样式表。

有两种解决方法:

对于这两种方法,我建议使用“path”模块。

解决方案1:

var path = require('path')
app.get('/path/to/js/foo.js',function(req,res){
    res.sendFile(path.resolve(__dirname,'/path/to/js/foo.js')
})
app.get('/path/to/css/bar.css',function(req,res){
    res.sendFile(path.resolve(__dirname,'/path/to/css/bar.css'))
})

对于你在index.html中添加的每个.css和.js文件,都要进行相同的操作。

解决方案2:

你可以在项目的根目录下创建一个public文件夹。里面包含了所有的img、css和js文件。

接下来,

var path = require('path')
app.use(express.static('public'))
app.get('/',function(req,res){
    res.sendFile(path.resolve(__dirname,'/index.html')
})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接