流星Up (mup)在EC2上的部署不同于本地应用



在本地主机上,应用程序运行正常。

在EC2上,应用程序运行在nginx之后。它加载到浏览器中,但没有显示任何内容。浏览器控制台显示错误

TypeError: 'undefined' is not an object (evaluating 'Package["service-configuration"].ServiceConfiguration')
我不知道如何处理这个问题。谢谢你的帮助。

编辑

    NGINX不是问题所在。如果我直接访问流星服务器,同样的行为。
  1. 运行"meteor add service-configuration"确实修复了上面提到的错误,但是没有错误并不能修复观察到的行为,即应用程序在EC2上不渲染,而在本地主机上启动时却渲染。(错误消息是EC2和localhost之间唯一可见的区别。所以我怀疑这就是原因。现在这个假设肯定是错的。)所以问题仍然存在。

问题解决了。教训:

Meteor有调试模式和生产模式。两者的行为可能不同。在本地主机上,meteor默认以调试模式运行。在部署到meteor.com或每个mup时,默认是生产模式。要在本地主机上运行生产模式的meteor,执行命令meteor --production .

看起来您正在尝试访问浏览器上的service-configuration配置。

这些在客户端不可用。这也会影响你的本地应用程序,但它不会破坏你的应用程序(不会给你一个空白页面),因为meteor处于调试模式。

在调试模式下,流星文件不会被连接,所以这样的错误不会被注意到,即使它是在你的js控制台上抛出的。在生产模式下,错误将停止脚本的其余部分(因为所有内容都被连接到单个文件中)

您需要确保执行此操作的代码仅在服务器端运行。一般来说,在客户端访问服务配置数据不是一个好主意。

看起来Arunoda和工作人员正在添加buildOptions.debug设置到下一个版本的MUP,这应该允许您通过MUP部署,并让它像运行在localhost上一样。请参阅Arunoda对相关问题的回答以及(至少目前)MUP开发版本的文档。

最新更新