我最近遇到的问题是我不了解节点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');
});
感谢您的时间! :)
答案 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);

答案 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')
})