我有一个简单的疑问,但无法弄清楚。我正在启动节点js app,从localhost位置,并通过我发送html文件的响应。但是它的节点加载了html中的脚本文件。
节点js文件
var express = require('express');
var app = express();
var ExpressPeerServer = require('peer').ExpressPeerServer;
app.get('/', function(req, res, next) {
console.log("before redirection");
res.sendfile('index.html'); });
var server = app.listen(9000);
var options = {
debug: true
}
app.use('/api', ExpressPeerServer(server, options));
server.on('connection', function(id) {
console.log("In Server connection")
});
server.on('disconnect', function(id) {
console.log("server Disconnected")
});
Html文件
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="http://cdn.peerjs.com/0.3/peer.js"></script>
<script type = "text/javascript" src="script.js"></script>
</head>
<body>
<h1>ha ha this is Webrtc</h1>
</body>
</html>
的script.js
function webRtcInit() {
alert("Inside Script")
}
$(document).on('ready', webRtcInit());
当我正常运行html文件时,它会加载脚本文件。但是当我通过节点js发送文件并加载脚本时,我收到错误,它无法获取脚本文件,为什么会发生这种情况......?
由于
答案 0 :(得分:3)
默认情况下,node.js服务器不提供任何文件(这与其他一些Web服务器不同)。因此,您希望它提供的任何文件都必须具有它的路由或某种处理它的中间件。
因此,您的代码确实有/
的路由,但是当浏览器解析您从该路由返回的index.html文件,然后尝试从您的node.js服务器加载script.js
,你没有路由,服务器将返回404(未找到)。
解决方案是为script.js
创建路线。由于它是静态资源,因此您可以使用express.static功能来提供所有静态文件。您可以阅读有关在快速here中提供静态文件的信息。
答案 1 :(得分:3)
我在您的代码中看到的问题很少:
这会呈现您的html页面,同样地,您需要一个script.js
。
app.get('/', function(req, res, next) {
console.log("before redirection");
res.sendfile('index.html');
});
具体:
app.get('/script.js', function(req, res, next) {
console.log("before redirection");
res.sendfile('index.html');
});
或通用:
app.use(express.static('static')); // now place your static files in the static folder.
与手头的问题无关,但在script.js
中,webRtcInit
不是webRtcInit()
:
$(document).on('ready', webRtcInit);