【问题标题】:Application throws error after deploy on vm在虚拟机上部署后应用程序抛出错误
【发布时间】:2018-09-07 06:31:14
【问题描述】:

我有一个应用程序从 angular 2 迁移到 angular 5。当我在本地部署它并通过 http-server 启动它时,我没有遇到任何错误。

在我的虚拟机上部署时出现问题。部署后,当我在浏览器中打开它时,它会引发以下错误:

TypeError: Object(...) 不是函数 在 _isAndroid (forms.js:920)

Error: Uncaught (in promise): TypeError: Object(...) is not a function TypeError: Object(...) 不是函数 在 _isAndroid (forms.js:920)

vm中的deploy流程如下:

  1. 克隆存储库
  2. 安装 npm 包
  3. 通过angular-cli 构建应用程序
  4. 复制相对路径上的分发文件夹

我的机器(本地和虚拟机)具有完全相同的 npm 5.8.0、@angular-cli 1.7.3,我不使用 package-lock.json

最后我不得不提一下,在迁移之前,我的部署过程完全相同。

你知道可能出了什么问题吗?

更新

我想出的是一个全新的 vm 初始化(操作系统、节点等)

【问题讨论】:

  • 好奇,您是否在本地和虚拟机中都使用 AoT 进行构建?
  • 不,这是默认的 JiT
  • 也许某些软件包已更新并且您的 vm 上有更新的版本?尝试在两个平台上列出软件包并查看差异
  • @David 我也尝试在我的电脑上克隆存储库并从头开始安装软件包,但没有任何问题。
  • 你比较了两个平台上安装的包吗? (npm ls)

标签: linux angular npm virtual-machine angular-cli


【解决方案1】:

我不相信 Node 6.x 中可以使用 Object 静态方法(好吧,不是没有标志) 根据 Node 网站,它们在 7.x 及以后版本中可用。

请参阅page 了解您需要的最低版本的详细信息

正如 ForestG 所述,您最好的解决方案是将您的 VM 更新到 Node 7.x 或更高版本。

【讨论】:

    【解决方案2】:

    看起来像是由于缺少 ; 而导致的缩小问题,或者是激进的优化或文件已损坏,但如果没有源代码则很难推理。

    例子:

    //without minification works ok
    function test() {
          var postTypes = new Array('hello', 'there')   
          (function() { alert('hello there') })()
    }
    
    //after minification produces error Uncaught TypeError: object is not a function
    function test() {
          var postTypes = new Array('hello', 'there')(function() { alert('hello there') })()
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      • 1970-01-01
      • 2015-01-08
      • 1970-01-01
      • 2016-07-10
      • 1970-01-01
      相关资源
      最近更新 更多