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