当我在请求数据时返回简单的 JSON 而不连接到数据库时,Angular Universal 中的服务器渲染工作正常。
但是我发现,如果我没有正确版本的 Zone.js,则不会向 MySQL 数据库发出请求。 我遇到了以下错误:
TypeError: Cannot read property 'on' of undefined
at Protocol._enqueue (/Applications/MAMP/htdocs/Angular2/myproject/node_modules/mysql/lib/protocol/Protocol.js:152:5)
...
我还注意到我收到了警告:
angular2-universal@2.1.0-rc.1 requires a peer of zone.js@~0.6.21 but none was installed.
所以我安装了正确的 Zone.js:
npm install zone.js@0.6.21
然后我开始从 MySQL 接收数据。
但是!此时服务器渲染停止工作!我只看到:
<!--template bindings={}-->
在 HTML 模板中。
我返回来返回一个没有连接到 MySQL 的 JSON,并且发现即使在这种情况下,服务器渲染也无法正常工作。
所以我对此进行了一些尝试,发现如果我使用命令:
npm install zone.js
当我在没有连接到数据库的情况下返回 JSON 时,服务器渲染工作正常,但如果我尝试连接到 MySQL,则会出现原始错误。
所以现在我要么可以工作服务器渲染,要么可以在没有服务器渲染的情况下连接到 MySQL。不是服务器渲染和与数据库的工作连接。
如果有人知道应该做什么,我将不胜感激。谢谢。
最佳答案
我已经找到解决办法了。就我而言,该问题是通过以下命令解决的:
npm install zone.js@latest
现在我可以向 MySQL 发出请求,而且我还可以进行服务器渲染,并且可以查看 HTML 模板中的所有数据。
关于mysql - 由于 Angular Universal 中的 Zone.js 服务器渲染停止工作。怎么修?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42659236/