Angular-fullstack生成器生产应用程序无法正确提供socket.io?

时间:2015-06-09 07:17:18

标签: javascript angularjs node.js socket.io angular-fullstack

我在AWS上通过相同的设置和配置部署的两个angular-fullstack应用程序之间遇到了麻烦。

尽管设置相同,但似乎socket.io-client / socket.io.js在其中一个上没有正确提供。

似乎在尝试获取socket.io.js时收到错误400(错误请求),反过来,它正在获得“未定义”。

我把它缩小到这段代码:

var socketio = require('socket.io')(server, {
  serveClient: (config.env === 'production') ? false : true,
  path: '/socket.io-client'
});

似乎如果我将serveClient设置为始终为true,它将起作用,因为它始终服务于客户端。

如果是这种情况,为什么在线这么多资源将serveClient设置为false用于生产?它适用于一个应用程序,但不适用于另一个应用程序。

编辑:刚刚在AWS上部署了serveClient:true。不行。但显然它适用于我的本地。

编辑2:为工作应用做了一个npm install,现在它已经坏了所以可能会因包裹而中断。

编辑3:在NODE_ENV=production和同一问题之后对grunt build:dist进行了测试,因此应该对其中一个软件包产生问题。

1 个答案:

答案 0 :(得分:4)

原来在grunt文件中构建的angular-fullstack将获取bower.json中的所有依赖项(通过wiredep),其中包括google-code-prettify / bin / prettify.min.js,因为我已经安装它。

缩小过程在某种程度上与已经缩小的prettify.min.js不兼容(在使用其他缩小文件之前从未真正解决过这个问题)。

所以我必须在wiredep.target.exclude属性中包含一个正则表达式,以排除google-code-prettyify / ** / .js文件并手动包含非缩小的/src/prettify.js文件。

我有一种感觉google-code-prettify包引起了问题,因为我记得JSHint之前抱怨它。

希望这能让人们意识到npm软件包可以间歇性地打破。