Javascript 节点JS-HTML路径

Javascript 节点JS-HTML路径,javascript,html,node.js,path,Javascript,Html,Node.js,Path,我最近遇到了一个问题,我不知道节点js中html的路径是如何工作的。我像普通一样链接index.html脚本-相对于index.html文件(node.js文件和index.html位于同一目录“res.sendFile(uu dirname+'/index.html');”)。但是如果我在浏览器中用NodeJS打开它,它只会统计脚本的“无法获取blabla”。相反,只需单击index.html而不使用节点js打开它,这些路径就可以工作!如何为节点js编写html路径 var express =

我最近遇到了一个问题,我不知道节点js中html的路径是如何工作的。我像普通一样链接index.html脚本-相对于index.html文件(node.js文件和index.html位于同一目录“res.sendFile(uu dirname+'/index.html');”)。但是如果我在浏览器中用NodeJS打开它,它只会统计脚本的“无法获取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');
});
谢谢你抽出时间!:)

看看这个:

您已经告诉Node“当浏览器要求
/
时,请给它
index.html

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

你还没有告诉Node该怎么做


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

您应该将express配置为服务器静态文件,例如,将所有静态文件放在名为“public”的目录下

var express=require('express');
var-app=express();
var path=require('path');
//观看http://localhost:8080
app.get('/',函数(req,res){
res.sendFile(path.join(uu dirname+'/index.html');
});
app.listen(8080)当您编写时:

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文件

其次,

你可以用

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

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


app.use('/assets',express.static('assets')此代码实际上在我的电脑上工作。除息的。也许权限有问题?
var path = require('path')
app.use(express.static('public'))
app.get('/',function(req,res){
    res.sendFile(path.resolve(__dirname,'/index.html')
})
app.use(express.static(path.join(__dirname, "folder-name")));