Node JS - HTML路径

时间:2016-03-22 12:00:39

标签: javascript html node.js path

我最近遇到的问题是我不了解节点js中html的路径是如何工作的。我正常链接index.html的脚本 - 相对于index.html的文件(node.js文件和index.html在同一目录下“res.sendFile(__ dirname +'/ index.html');”)。但是如果我在使用节点js执行的浏览器中打开它,那么对于脚本来说,只有“cant GET blabla”的统计数据。而只需单击index.html而不用节点js打开它们,这些路径就可以了!我如何为节点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');
});

感谢您的时间! :)

5 个答案:

答案 0 :(得分:3)

看看这个:

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

您告诉Node"当浏览器要求/给它index.html"。

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

你还没告诉Node该做什么。

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

答案 1 :(得分: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 to Deliver HTML Files

Render HTML file in ExpressJS

答案 2 :(得分:0)

您可以使用

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

答案 3 :(得分:0)

通常,我将所有静态文件放在一个名为“资产”的单独文件夹中 我设置了一条静态路由,如下所示:enter code here

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

答案 4 :(得分:-1)

当你写:

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

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

有两种方法可以解决这个问题:

对于他们两个人,我建议使用'路径'模块。

解决方案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:

您可以在项目的根目录中创建公共目录。在其中所有的img,css和js文件都在那里。

接下来,

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