我在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
进行了测试,因此应该对其中一个软件包产生问题。
答案 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软件包可以间歇性地打破。