在生产模式下编译的Angular 5代码给出void 0而不是函数错误

时间:2017-12-25 22:07:02

标签: angular5

在开发模式下运行正常。

错误:

Uncaught TypeError: (void 0) is not a function
    at main.aff8cee52d3bd3903f34.bundle.js:1
    at Object.cDNt (main.aff8cee52d3bd3903f34.bundle.js:1)
    at n (inline.0da255c51a7d5ae908f0.bundle.js:formatted:10)
    at Object.0 (main.aff8cee52d3bd3903f34.bundle.js:1)
    at n (inline.0da255c51a7d5ae908f0.bundle.js:formatted:10)
    at window.webpackJsonp (inline.0da255c51a7d5ae908f0.bundle.js:formatted:25)
    at main.aff8cee52d3bd3903f34.bundle.js:1

发生错误的bundle.js代码:

webpackJsonp([1], {
    ....
    wi = new yi.l("UseV4Plurals"), Ei = function() {}, Mi = function(e) {
        function t(t, n) {
            var r = e.call(this) || this;
            return r.locale = t,
                   r.deprecatedPluralFn = n,
                   r
        }
        return (void 0)(t, e),   <-------------- Error 

我的package.json文件:

{
  "name": "angular-front-end",
  "version": "0.0.0",
  "license": "MIT",
  "scripts": {
      "ng": "ng",
      "start": "ng serve",
      "build": "ng build",
      "test": "ng test",
      "lint": "ng lint",
      "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
      "@angular/animations": "^5.0.5",
      "@angular/cdk": "^5.0.0-rc.2",
      "@angular/common": "^5.0.0",
      "@angular/compiler": "^5.0.0",
      "@angular/core": "^5.0.0",
      "@angular/flex-layout": "^2.0.0-beta.10-4905443",
      "@angular/forms": "^5.0.0",
      "@angular/http": "^5.0.0",
      "@angular/material": "^5.0.0-rc.2",
      "@angular/platform-browser": "^5.0.0",
      "@angular/platform-browser-dynamic": "^5.0.0",
      "@angular/router": "^5.0.0",
      "core-js": "^2.4.1",
      "gl-matrix": "^2.4.0",
      "rxjs": "^5.5.2",
      "three": "^0.88.0",
      "zone.js": "^0.8.14"
  },
  "devDependencies": {
      "@angular/cli": "1.5.4",
      "@angular/compiler-cli": "^5.0.0",
      "@angular/language-service": "^5.0.0",
      "@types/gl-matrix": "^2.4.0",
      "@types/jasmine": "~2.5.53",
      "@types/jasminewd2": "~2.0.2",
      "@types/node": "~6.0.60",
      "@types/proj4": "^2.3.4",
      "@types/three": "^0.84.34",
      "codelyzer": "^4.0.1",
      "jasmine-core": "~2.6.2",
      "jasmine-spec-reporter": "~4.1.0",
      "karma": "~1.7.0",
      "karma-chrome-launcher": "~2.1.1",
      "karma-cli": "~1.0.1",
      "karma-coverage-istanbul-reporter": "^1.2.1",
      "karma-jasmine": "~1.1.0",
      "karma-jasmine-html-reporter": "^0.2.2",
      "protractor": "~5.1.2",
      "ts-node": "~3.2.0",
      "tslint": "~5.7.0",
      "typescript": "~2.4.2"
    }
}

2 个答案:

答案 0 :(得分:2)

我一直遇到同样的问题。除了bmarti44的答案,我建议运行

ng build --prod --source-map=true

这有助于我们诊断错误的出处(本例中为npm软件包)。我们删除了包装,生产版本再次开始工作。我感谢这不是每个人的选择。


作为参考,从Angular 7开始,这仍然是一个问题

答案 1 :(得分:1)

我不会说这是最好的答案,但如果你处在困境中,你可以在你的prod版本中禁用构建优化器。有点像...

ng build --prod --build-optimizer=false

那&#34;固定&#34;问题并允许我们建立。我认为构建优化器在某些情况下删除了太多代码,并破坏了代码库。