big*_*mac 5 javascript node.js express socket.io
这让我很疯狂......虽然我有一个Express + Socket.io的工作版本,我似乎无法通过在新项目文件夹中开箱即用的NPM安装来重现它.任何人都可以指出我错过了什么......?这是我的过程:
我node_modules
在项目目录(pwd
)中创建了一个文件夹,然后执行:
npm install express
npm install socket.io
Run Code Online (Sandbox Code Playgroud)
运行这两个命令会将包node_modules
按预期放入项目的文件夹中.现在我使用以下内容设置我的服务器:
var express = require('express'),
server = express.createServer().use( express.static(__dirname+'./public') ).listen( 8080 ),
io = require('socket.io').listen(server);
Run Code Online (Sandbox Code Playgroud)
我的public
文件夹包含我的应用程序的静态资产 我的公共索引HTML页面包含一个脚本标记:
<script src="/socket.io/socket.io.js"></script>
Run Code Online (Sandbox Code Playgroud)
最后,我运行我的服务器脚本并在Web浏览器中转到应用程序.我的静态公共文件都正常提供,但我得到了404 /socket.io/socket.io.js
.现在,我可以express
从另一个旧项目交换一个包,让整个系统工作.不知何故,包实例配置不同,但我无法弄清楚如何重现它.Express网站提到了有关安装依赖项的内容,虽然运行npm install -d
似乎没有帮助(运行时是否pwd
需要特定的npm install -d
?).我想在使用NPM安装后,我必须遗漏一些关于配置新Express实例的重要信息.
感谢您的所有见解!
好的,所以我的例子实际上是我的代码的缩写,并且该示例代码确实有效.我遇到问题的真正代码有点混乱,如下所示:
var server = express.createServer();
server
.use( server.router )
.use( express.static(__dirname+'/../public') )
.get('/api', function(req, res) {
res.write('API');
});
server.listen(8080);
var io = require('socket.io').listen(server);
Run Code Online (Sandbox Code Playgroud)
我通过执行以下操作修复了上述代码:
server = server.listen(8080);
Run Code Online (Sandbox Code Playgroud)
显然,该listen
命令包含一些附加功能的服务器对象.我最初发布的简写示例实际上是有效的,因为它listen
被链接到最终返回到服务器变量中.有趣的小细微差别.
归档时间: |
|
查看次数: |
2725 次 |
最近记录: |