简体   繁体   English

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

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

When I compile my angular8 (cli) project in production mode by当我在生产模式下编译我的 angular8 (cli) 项目时

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

then when I put dist to file serwer and open browser I get error in console and black screen:然后当我将dist放入文件服务器并打开浏览器时,我在控制台和黑屏中出现错误:

Uncaught SyntaxError: Delete of an unqualified identifier in strict mode.未捕获的语法错误:在严格模式下删除非限定标识符。
main-es2015.4c04714d1d600593094f.js:1 main-es2015.4c04714d1d600593094f.js:1

When I open main-es...js js file I see当我打开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 !!!!!!!! }()

Below I add package.json下面我添加 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" } }

How to fix it?如何解决?

Ok - my mistake.好的 - 我的错误。 In one of my angular project files I use imports of external libraries在我的一个角度项目文件中,我使用了外部库的导入

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

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

and forgot that angular insert them to build file main-es20...js .忘记了 angular 插入它们来构建文件main-es20...js The angular force strict mode for that imported code and this cause error inside that libraries.该导入代码的角度强制strict mode ,这会导致该库中的错误。 When I remove that imports (but left declare statements) and link libraries in <script ...> tags inside index.html (where strict mode is off as default) everything works fine without any errors.当我删除index.html中的<script ...>标签中的导入(但保留declare语句)和链接库(其中strict mode默认关闭)时,一切正常,没有任何错误。

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

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