【问题标题】:Changing the location of index.js in Yeoman, ExpressJS and Socket.io在 Yeoman、ExpressJS 和 Socket.io 中更改 index.js 的位置
【发布时间】:2013-01-28 04:01:52
【问题描述】:

我正在尝试将工作中的 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

Yeomen 服务器

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

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

【问题讨论】:

    标签: angularjs socket.io express yeoman


    【解决方案1】:

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

    您可能需要通过 npm 作为全局安装 socket.io 或将 ../ 放在 before before 你的 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
    

    });

    希望能有所帮助

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2012-10-21
        • 2012-12-15
        • 2016-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多