在对数据的请求中,我返回不连接数据库的简单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)
...


我也注意到我有一个警告:

[email protected] requires a peer of zone.js@~0.6.21 but none was installed.


所以我安装了正确的Zone.js:

npm install [email protected]


然后我开始从MySQL接收数据。

但!此时服务器渲染停止工作!我只看到:

<!--template bindings={}-->


在HTML模板中。

我回过头来返回不连接MySQL的JSON,发现即使在这种情况下,服务器渲染也无法正常工作。

因此,我对此进行了一些尝试,发现如果我使用命令:

npm install zone.js


然后当我返回不连接数据库的JSON时,服务器渲染正常工作,但是如果我尝试连接到MySQL,则会发生原始错误。

所以现在我可以进行服务器渲染,也可以连接到没有服务器渲染的MySQL。不是服务器渲染和与数据库的有效连接。

如果有人知道应该怎么做,我将不胜感激。谢谢。

最佳答案

我找到了解决方案。就我而言,该问题已通过以下命令解决:

npm install zone.js@latest


现在,我可以向MySQL发送请求,也可以进行服务器渲染,并且可以在HTML模板中看到所有数据。

08-06 16:30