angular full - stack生成器的生产应用不能正确地服务于socket.io

Angular-fullstack generator production app does not properly serve socket.io?

本文关键字:正确地 应用 不能 服务于 io socket full stack angular      更新时间:2023-09-26

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

似乎socket.io-client/socket.io.js在其中一个上不能正常服务,尽管有相同的设置。

当试图获得socket.io.js时,它似乎得到一个错误400(错误请求),反过来,它得到一个"io未定义"。

我把它缩小到这段代码:

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

似乎如果我设置serveClient总是为true,它将工作,因为它总是为客户端服务。

如果是这样的话,为什么那么多在线资源在生产环境中将serviceclient设置为false ?它适用于一个应用程序,但不适用于另一个。

编辑:刚刚在AWS上部署了serviceclient: true。是行不通的。但显然它在我的本地工作。

编辑2:为工作应用程序做了一个npm install,现在它坏了,所以可能是包坏了。

编辑3:在grunt build:dist之后对NODE_ENV=production进行了测试,同样的问题,所以它应该是其中一个软件包的问题。

原来angular-fullstack的内置grunt文件会抓取所有依赖项。我已经安装了google-code-prettify/bin/prettify.min.js。

最小化过程与已经最小化的prettify.min.js不兼容(实际上在其他最小化文件之前从未遇到过这个问题)。

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

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

希望这能让大家意识到npm包可能会以某种间歇性的方式被破坏。