【发布时间】:2019-06-07 23:12:15
【问题描述】:
我正在尝试创建一个简单的 Io-web-chat。
我最近想将我的 html 文件中的 <script> 分离到一个外部 js 文件中。
这是我非常简单的文件夹结构:
Chat
|-- index.html
|-- index.js
`-- server.js
html文件的相关部分:
<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
<script src="index.js"></script>
</body>
</html>
index.js 文件的相关部分:
$(function() {
//Initialize variables
var $messageArea = $('#messages');
var $InputMessage = $('#InputMessage');
var $InputName = $('#InputName');
//Initialize Socket
var socket = io();
//Send server Your message
socket.emit('chat message', $InputMessage.val());
});
server.js 文件的相关部分:
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
我还尝试将我的文件放在他们在 socket.io 示例中的这种公共类型结构中:
Chat
|-- Public
| |-- index.html
| `-- index.js
`-- server.js
在那种情况下,我改变了:
src="/index.js" 在 html 中
将/public/index.html 添加到 server.js 文件中
但没有运气。
这一切都在 localhost 中运行。 我在这里做错了什么?
【问题讨论】:
-
您是否有反向代理,例如 Apache 或 Nginx?如果没有,你就没有任何服务于“index.js”文件的东西:没有反向代理,没有路由,什么都没有。看看使用 express.static() 在开发模式下提供静态文件,并最终在生产模式下使用 Nginx。
-
“服务 index.js 文件”到底是什么意思?我不认为我有代理,我只是用“节点服务器”运行本地主机。正如你所说的apache,这是否意味着我在开发时需要一个始终运行的专用服务器?那么我应该在 apache 下的 xampp 上使用整个演出吗?
-
查看您如何在“/”路由中发送“index.html”文件?好吧,您的 .js 文件也不例外:您还需要以某种方式发送它。我将起草一个不涉及安装 Apache 或 Nginx 的快速答案。
标签: javascript sockets