2

我正在尝试将工作中的 Socket.io、AngularJS 和 ExpressJS 3.x 项目合并到新的 Yeoman:Express Stack。

我首先按照https://github.com/yeoman/yeoman/tree/express-stack上给出的指示,即,

yeomen init angularcrud # 标准 Angular 应用

yeomen init angularcrud:crud post # Angular CRUD 路由/视图

yeomen init express post # Express CRUD

也门服务器

我已经合并了代码,仔细检查了新代码在每个点上是否有效。在我添加 socket.io 之前,此过程是成功的。那时,当我运行“yeoman server”时,我收到错误“/socket.io/socket.io.js Not Found”,这与以下问题Socket.io not being serving by Node 中的错误基本相似。 js服务器。在 First Zero 对问题的回答中,他指出“node_modules 应该与 server.js 位于同一目录中,而不是在服务器根目录之上”。在 Yeoman: Express Stack 创建的目录设置中,情况正是如此,node_modules 位于服务器根目录(index.js)之上一层。如果只是将 index.js 移动到与 node_modules 相同的级别,则会出现找不到模块错误。

我想知道如何修改设置以使 Yeoman: Express 与 socket-io 一起工作。

4

2 回答 2

0

过去几天我一直在测试这个分支,虽然没有使用 socket.io 类我知道这么多 node_modules 进入项目根目录而不是服务器/

您可能需要通过 npm 作为全局安装 socket.io 或在您的 require('../socket.io') 之前放置 ../ 或其他东西。我们也做了大多数 Express/Angular 存根/种子/示例也有的事情,即在 Express 路由定义的末尾包含一个通配符路由。

如果您还需要一个包罗万象的路由和/或将 html5mode 设置为 true,那么您需要确保像下面这样定义它,或者将您的客户端会话以角度螺旋成一个自引用的加载循环:

app.get(/^((?!\/styles|scripts\/).)*$/, function(req, res){
  res.render('<app_path>/app/index.html'); // or chrome.html if you call it such

});

希望有所帮助

于 2013-02-03T06:50:25.427 回答
0

您的模块问题的另一个想法是尝试进入 /yeoman-custom 目录并将其安装在那里,因为这是 yeoman-custom/cli/tasks/server.js 为 Node 提供的实际根目录。

于 2013-02-03T07:16:49.100 回答