前端用node搭建局域网访问 怎么加载j等文件?
在练习node
的时候,打算搭建一个局域网访问的服务。
使用node
的http
模块。
启动后能加载本地的html
文件但是对于css
、js
文件无法加载。
请问我的写法对吗?
// 局域网访问
const http = require("http");
const fs = require("fs");
const contentType = {
"html": "text/html",
"htm": "text/html",
"css": "text/css",
"js": "application/javascript",
"png": "image/png",
"jpg": "image/jpeg",
"xml": "text/xml",
"json": "application/json",
}
let ROOT = "/worker/HoroyHomeApp-H5";
let server = http.createServer(function (request, response) {
// 请求路径
let url = request.url;
let file = ROOT + url;
// 获取请求文件类型
let str = url.split(".");
let type = str[str.length - 1];
let resContentType = contentType[type] || 'text/plain';
fs.readFile(file, function (err, data) {
if (err) {
response.writeHead(404, {
"Content-Type": "application/json;charset=utf-8"
});
response.write(JSON.stringify({
"err": err
}))
response.end;
} else {
response.writeHead(200, {
"Content-Type": resContentType
});
response.write(data)
response.end;
}
})
})
server.listen(8080, "192.168.100.18");
console.log("http://192.168.100.18:8080/html/index.html");
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div id="app">
<button @click="handleclick">{{msg}}</button>
</div>
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script>
<script src="./demo.js"></script>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data() {
return {
msg: "点击"
}
},
methods: {
handleclick() {
console.log("ok");
}
}
})
</script>
</body>
</html>
// demo.js
console.log("demo.js");
启动服务后出现的情况是 demo.js
被阻断了。
单独打开http://192.168.100.18:8080/html/demo.js
文件是可以。
但是通过script
引入的js文件无法被执行。
一段时间后会出现如下错误:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
response.end
是方法吧。应该这样response.end()
response.write()
写入后未关闭连接,导致http挂起。所以后续的请求都挂起了。