繁体   English   中英

运行 angular 8 生产时:在严格模式下删除不合格的标识符

[英]When run angular 8 production: Delete of an unqualified identifier in strict mode

当我在生产模式下编译我的 angular8 (cli) 项目时

ng build --aot=true --prod --optimization=true --buildOptimizer=true

然后当我将dist放入文件服务器并打开浏览器时,我在控制台和黑屏中出现错误:

未捕获的语法错误:在严格模式下删除非限定标识符。
main-es2015.4c04714d1d600593094f.js:1

当我打开main-es...js js 文件时,我看到

 hasWebGL: function() { if (!window.WebGLRenderingContext) return 0; var e = document.createElement("canvas") , t = e.getContext("webgl2"); return t ? 2 : (t = e.getContext("experimental-webgl2")) ? 2 : (t = e.getContext("webgl")) || (t = e.getContext("experimental-webgl")) ? 1 : 0 }(), hasCursorLock: (p = document.createElement("canvas"), p.requestPointerLock || p.mozRequestPointerLock || p.webkitRequestPointerLock || p.msRequestPointerLock ? 1 : 0), hasFullscreen: function() { var e = document.createElement("canvas"); return (e.requestFullScreen || e.mozRequestFullScreen || e.msRequestFullscreen || e.webkitRequestFullScreen) && (-1 == s.indexOf("Safari") || l >= 10.1) ? 1 : 0 }(), hasThreads: "undefined" != typeof SharedArrayBuffer, hasWasm: "object" == typeof WebAssembly && "function" == typeof WebAssembly.validate && "function" == typeof WebAssembly.compile, hasWasmThreads: function() { if ("object" != typeof WebAssembly) return !1; if ("undefined" == typeof SharedArrayBuffer) return !1; var e = new WebAssembly.Memory({ initial: 1, maximum: 1, shared: !0 }) , t = e.buffer instanceof SharedArrayBuffer; return delete e,t // HERE IS PROBLEM !!!!!!!! }()

下面我添加 package.json

 { "name": "my-project", "version": "0.0.0", "scripts": { "ng": "ng", "start": "ng serve --host 0.0.0.0 --port 3002 --disable-host-check --poll 1", "build": "cp ./src/environments/environment.prod.ts ./src/environments/environment.ts && ng build --aot=true --prod --optimization=true --buildOptimizer=true", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e" }, "private": true, "dependencies": { "@angular/animations": "~8.0.0", "@angular/common": "~8.0.0", "@angular/compiler": "~8.0.0", "@angular/core": "~8.0.0", "@angular/forms": "~8.0.0", "@angular/platform-browser": "~8.0.0", "@angular/platform-browser-dynamic": "~8.0.0", "@angular/router": "~8.0.0", "@ngx-translate/core": "^11.0.1", "@ngx-translate/http-loader": "^4.0.0", "rxjs": "~6.4.0", "tslib": "^1.9.0", "zone.js": "~0.9.1" }, "devDependencies": { "@angular-devkit/build-angular": "~0.800.0", "@angular/cli": "~8.0.2", "@angular/compiler-cli": "~8.0.0", "@angular/language-service": "~8.0.0", "@fortawesome/fontawesome-free": "^5.9.0", "@types/jasmine": "~3.3.8", "@types/jasminewd2": "~2.0.3", "@types/node": "~8.9.4", "codelyzer": "^5.0.0", "jasmine-core": "~3.4.0", "jasmine-spec-reporter": "~4.2.1", "karma": "~4.1.0", "karma-chrome-launcher": "~2.2.0", "karma-coverage-istanbul-reporter": "~2.0.1", "karma-jasmine": "~2.0.1", "karma-jasmine-html-reporter": "^1.4.0", "protractor": "~5.4.0", "ts-node": "~7.0.0", "tslint": "~5.15.0", "typescript": "~3.4.3" } }

如何解决?

好的 - 我的错误。 在我的一个角度项目文件中,我使用了外部库的导入

import '../../../../assets/unity3d/Build/UnityLoader.js'; 
import '../../../../assets/unity3d/TemplateData/UnityProgress.js';

declare var UnityLoader : any;
declare var UnityProgress : any;

忘记了 angular 插入它们来构建文件main-es20...js 该导入代码的角度强制strict mode ,这会导致该库中的错误。 当我删除index.html中的<script ...>标签中的导入(但保留declare语句)和链接库(其中strict mode默认关闭)时,一切正常,没有任何错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM