节点JS – HTMLpath

我最近有问题,我不知道节点js中的htmlpath如何工作。 我把index.html的脚本和普通的index.html的文件相关联(node.js文件和index.html位于同一个目录“res.sendFile(__ dirname +'/index.html');”)。 但是,如果我打开它的浏览器执行节点js它只是统计“不能GET blabla”的脚本。 只需点击index.html而不使用节点js就可以打开这些path! 我该如何编写节点js的htmlpath?

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'); }); 

谢谢你的时间! 🙂

看这个:

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

你已经告诉节点“当浏览器要求/给它index.html ”。

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

你还没有告诉Node该怎么做。

(你可能想find一个提供静态文件的库,而不是单独地明确地处理每个文件)。

您应该将expressconfiguration为服务器静态文件,例如,将所有静态文件放在名为“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); 

当你写:

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

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

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

对于他们两个,我会build议使用“path”模块。

解决scheme1:

 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文件都是如此。

解决scheme2:

您可以在项目的根目录中创build一个公共目录。 里面所有的IMG,CSS和JS文件将在那里。

下一个,

 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")));