Angular ng build--prod=无法设置属性'_自动激活';未定义的

Angular ng build--prod=无法设置属性'_自动激活';未定义的,angular,gsap,Angular,Gsap,我正在尝试部署Angular应用程序,但在运行ng build--prod--base href.之后,我在Chrome中遇到以下错误 main.afc84290417a517dd6c3.js:1 Uncaught TypeError: Cannot set property _autoActivated' of undefined at Object.zUnb (main.afc84290417a517dd6c3.js:1) at p (runtime.a66f828dca56

我正在尝试部署Angular应用程序,但在运行
ng build--prod--base href.
之后,我在Chrome中遇到以下错误

main.afc84290417a517dd6c3.js:1 Uncaught TypeError: Cannot set property _autoActivated' of undefined
    at Object.zUnb (main.afc84290417a517dd6c3.js:1)
    at p (runtime.a66f828dca56eeb90e02.js:1)
    at Object.5 (main.afc84290417a517dd6c3.js:1)
    at p (runtime.a66f828dca56eeb90e02.js:1)
    at n (runtime.a66f828dca56eeb90e02.js:1)
    at Array.e [as push] (runtime.a66f828dca56eeb90e02.js:1)
    at main.afc84290417a517dd6c3.js:1
ng-v输出

Angular CLI: 6.0.8
Node: 8.11.2
OS: darwin x64
Angular: 6.0.7
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router
我真的不知道如何调试这个?运行
ng service
应用程序运行正常

搜索项目时,对
\u autoActivated
的唯一引用位于TweenMax.js中

export const TweenMax = TweenMaxBase;
TweenMax._autoActivated = [TimelineLite, TimelineMax, CSSPlugin, AttrPlugin, BezierPlugin, RoundPropsPlugin, DirectionalRotationPlugin, Back, Elastic, Bounce, RoughEase, SlowMo, SteppedEase, Circ, Expo, Sine, ExpoScaleEase];
应用程序依赖项-

 "@angular/animations": "^6.0.7",
    "@angular/cdk": "^6.3.1",
    "@angular/common": "^6.0.7",
    "@angular/compiler": "^6.0.7",
    "@angular/core": "^6.0.7",
    "@angular/forms": "^6.0.7",
    "@angular/http": "^6.0.7",
    "@angular/material": "^6.3.1",
    "@angular/platform-browser": "^6.0.7",
    "@angular/platform-browser-dynamic": "^6.0.7",
    "@angular/router": "^6.0.7",
    "@types/three": "^0.92.11",
    "core-js": "^2.5.4",
    "gsap": "^2.0.1",
    "hammerjs": "^2.0.8",
    "normalize-scss": "^7.0.1",
    "normalize.css": "^8.0.0",
    "rxjs": "^6.2.1",
    "three": "^0.87.1",
    "three-effectcomposer-es6": "0.0.4",
    "three-screen-quad": "^0.2.1",
    "zone.js": "^0.8.26"

我遇到了同样的问题,它是由GSAP和Angular的构建优化器组合而成的

您可以通过标题进入
angular.json
来禁用此功能,但需要一些文件大小。 按如下方式设置生产构建配置:

"configurations": {
  "production": {
    "optimization": true,
    "outputHashing": "all",
    "sourceMap": false,
    "extractCss": true,
    "namedChunks": false,
    "aot": true,
    "extractLicenses": true,
    "vendorChunk": false,
    "buildOptimizer": false, // <-- This ensures compatibility with GSAP
    "fileReplacements": [
      {
        "replace": "src/environments/environment.ts",
        "with": "src/environments/environment.prod.ts"
      }
    ]
  }
}
“配置”:{
“生产”:{
“优化”:没错,
“输出授权”:“全部”,
“sourceMap”:false,
是的,
“namedChunks”:假,
“aot”:是的,
是的,
“vendorChunk”:假,

“buildOptimizer”:false,//也有同样的问题,将gsap切换到另一个库,如popmotions,它就可以工作了

这是因为TweenMax使用类似于
getBoundingClientRect()
的函数,并尝试将div附加到dom中以确定某些内容。这在服务器中显然是不可能的

我仍然更喜欢gsap而不是popmotion(在我看来,糟糕的语法),但我已经尝试了很多方法

•延迟加载gsap(不理想)

•调整gsap库(不理想)

•使用名为domino的库模拟窗口、文档和导航器


都不走运。如果有人找到gsap的解决方案,我很想听听。

我也有同样的问题。您必须将以下脚本添加到
angular.json

“脚本”:[
“/node_modules/gsap/umd/TweenMax.js”,
“/node_modules/gsap/umd/ScrollToPlugin.js”]
尝试更改您的导入。 例如:

import { TweenLite } from 'gsap'
import { TweenLite } from 'gsap/all'
例如:

import { TweenLite } from 'gsap'
import { TweenLite } from 'gsap/all'

我目前使用的是Angular 9.0.7。我的生产版本也有问题,并收到一些错误消息。没有必要向Angular.json文件添加脚本。使用正常导入也足够了。因此,请不要导入“全部”

以下解决方案帮助了我:

Main.ts文件中包括以下代码行:

import { gsap } from 'gsap';
import { CSSPlugin } from 'gsap/CSSPlugin';

gsap.registerPlugin(CSSPlugin);

享受!

使用
从'gsap/umd/TweenMax'导入{TweenMax};
而不是
导入{TweenMax}从“gsap/TweenMax”

您没有使用gsap?请与我们共享您的其他依赖项。是的!问题更新如果您使用--prod选项进行构建,则会导致一些问题。如果您仅使用ng构建,是否会发生相同的问题?AOT编译器似乎会在此处导致问题。如果它在没有--prod的情况下工作,请参阅:了解更多信息信息是的,你是对的,只是运行ng build,它工作得很好…:/…不确定我能做些什么?它工作得很好!!你知道有什么问题可以解决吗,希望我们将来可以使用buildOptimizer关闭buildOptimizer会增加捆绑包的大小,这是不可取的。请参阅@Yunus-answer。从/all导入很方便它不应该对这类事情产生影响。这应该是公认的答案。关闭BuildOptimization是不可取的,因为它会创建非常大的包大小。