问题标签 [angular-compiler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1289 浏览

angular - 无法在 getRequiredModulePath 的 NodeObject.getText 处读取未定义的属性“文本”

生成浏览器应用程序包时发生错误(阶段:设置)。什么会导致此错误?

来自控制台的信息:

生成浏览器应用程序包(阶段:设置)... TypeError:无法读取 NodeObject.getText 处未定义的属性“文本”(/opt/app-root/src/node_modules/typescript/lib/typescript.js:152697:31)在 getRequiredModulePath (/opt/app-root/src/node_modules/@angular/compiler-cli/ngcc/src/host/umd_host.js:519:99) 在 Object.getImportsOfUmdModule (/opt/app-root/src/node_modules /@angular/compiler-cli/ngcc/src/host/umd_host.js:510:23) 在 UmdDependencyHost.extractImports (/opt/app-root/src/node_modules/@angular/compiler-cli/ngcc/src/dependencies /umd_dependency_host.js:43:54) 在 UmdDependencyHost.DependencyHostBase.recursivelyCollectDependencies (/opt/app-root/src/node_modules/@angular/compiler-cli/ngcc/src/dependencies/dependency_host.js:85:32) 在 UmdDependencyHost .DependencyHostBase。collectDependencies (/opt/app-root/src/node_modules/@angular/compiler-cli/ngcc/src/dependencies/dependency_host.js:38:22) 在 DependencyResolver.getEntryPointWithDependencies (/opt/app-root/src/node_modules/ @angular/compiler-cli/ngcc/src/dependencies/dependency_resolver.js:75:22) 在 EntryPointCollector.walkDirectoryForPackages (/opt/app-root/src/node_modules/@angular/compiler-cli/ngcc/src/entry_point_finder/ entry_point_collector.js:47:52) 在 EntryPointCollector.walkDirectoryForPackages (/opt/app-root/src/node_modules/@angular/compiler-cli/ngcc/src/entry_point_finder/entry_point_collector.js:75:103) 在 /opt/app -root/src/node_modules/@angular/compiler-cli/ngcc/src/entry_point_finder/program_based_entry_point_finder.js:124:100在 EntryPointCollector.walkDirectoryForPackages (/opt/app-root/src/node_modules/ @angular/compiler-cli/ngcc/src/entry_point_finder/entry_point_collector.js:47:52) 在 EntryPointCollector.walkDirectoryForPackages (/opt/app-root/src/node_modules/@angular/compiler-cli/ngcc/src/entry_point_finder/ entry_point_collector.js:75:103) 在 /opt/app-root/src/node_modules/@angular/compiler-cli/ngcc/src/entry_point_finder/program_based_entry_point_finder.js:124:100在 EntryPointCollector.walkDirectoryForPackages (/opt/app-root/src/node_modules/ @angular/compiler-cli/ngcc/src/entry_point_finder/entry_point_collector.js:47:52) 在 EntryPointCollector.walkDirectoryForPackages (/opt/app-root/src/node_modules/@angular/compiler-cli/ngcc/src/entry_point_finder/ entry_point_collector.js:75:103) 在 /opt/app-root/src/node_modules/@angular/compiler-cli/ngcc/src/entry_point_finder/program_based_entry_point_finder.js:124:10052) 在 EntryPointCollector.walkDirectoryForPackages (/opt/app-root/src/node_modules/@angular/compiler-cli/ngcc/src/entry_point_finder/entry_point_collector.js:75:103) 在 /opt/app-root/src/node_modules /@angular/compiler-cli/ngcc/src/entry_point_finder/program_based_entry_point_finder.js:124:10052) 在 EntryPointCollector.walkDirectoryForPackages (/opt/app-root/src/node_modules/@angular/compiler-cli/ngcc/src/entry_point_finder/entry_point_collector.js:75:103) 在 /opt/app-root/src/node_modules /@angular/compiler-cli/ngcc/src/entry_point_finder/program_based_entry_point_finder.js:124:100

来自 angular-errors.log 的信息

构建过程中发生错误:错误:NGCC 失败。在 NgccProcessor.process (/opt/app-root/src/node_modules/@ngtools/webpack/src/ngcc_processor.js:139:19) 在 /opt/app-root/src/node_modules/@ngtools/webpack/src/ ivy/plugin.js:129:27 at Hook.eval [as call] (eval at create (/opt/app-root/src/node_modules/tapable/lib/HookCodeFactory.js:19:10), :28:1 ) 在 Hook.CALL_DELEGATE [as _call] (/opt/app-root/src/node_modules/tapable/lib/Hook.js:14:14) 在 Compiler.newCompilation (/opt/app-root/src/node_modules/webpack /lib/Compiler.js:1043:30)在 /opt/app-root/src/node_modules/webpack/lib/Compiler.js:1088:29 在 Hook.eval [as callAsync] (创建时的评估(/opt/ app-root/src/node_modules/tapable/lib/HookCodeFactory.js:33:10), :22:1) 在 Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/opt/app-root/src/node_modules/tapable/lib/ Hook.js:18:14) 在编译器。在编译器的 /opt/app-root/src/node_modules/webpack/lib/Compiler.js:508:12 处编译 (/opt/app-root/src/node_modules/webpack/lib/Compiler.js:1083:28) .readRecords (/opt/app-root/src/node_modules/webpack/lib/Compiler.js:920:11) 在 /opt/app-root/src/node_modules/webpack/lib/Compiler.js:505:11 在Hook.eval [as callAsync] (eval at create (/opt/app-root/src/node_modules/tapable/lib/HookCodeFactory.js:33:10), :10:1) at Hook.CALL_ASYNC_DELEGATE [as _callAsync] ( /opt/app-root/src/node_modules/tapable/lib/Hook.js:18:14) 在 /opt/app-root/src/node_modules/webpack/lib/Compiler.js:502:20 在 Hook.eval [as callAsync] (eval at create (/opt/app-root/src/node_modules/tapable/lib/HookCodeFactory.js:33:10), :22:1) 发生未处理的异常:NGCC 失败。有关详细信息,请参阅“/tmp/ng-IZbyMh/angular-errors.log”。js:1083:28) 在 /opt/app-root/src/node_modules/webpack/lib/Compiler.js:508:12 在 Compiler.readRecords (/opt/app-root/src/node_modules/webpack/lib/Compiler .js:920:11) 在 /opt/app-root/src/node_modules/webpack/lib/Compiler.js:505:11 在 Hook.eval [as callAsync] (eval at create (/opt/app-root/ src/node_modules/tapable/lib/HookCodeFactory.js:33:10), :10:1) 在 Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/opt/app-root/src/node_modules/tapable/lib/Hook.js: 18:14) 在 /opt/app-root/src/node_modules/webpack/lib/Compiler.js:502:20 在 Hook.eval [as callAsync] (eval at create (/opt/app-root/src/node_modules /tapable/lib/HookCodeFactory.js:33:10), :22:1) 发生未处理的异常:NGCC 失败。有关详细信息,请参阅“/tmp/ng-IZbyMh/angular-errors.log”。js:1083:28) 在 /opt/app-root/src/node_modules/webpack/lib/Compiler.js:508:12 在 Compiler.readRecords (/opt/app-root/src/node_modules/webpack/lib/Compiler .js:920:11) 在 /opt/app-root/src/node_modules/webpack/lib/Compiler.js:505:11 在 Hook.eval [as callAsync] (eval at create (/opt/app-root/ src/node_modules/tapable/lib/HookCodeFactory.js:33:10), :10:1) 在 Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/opt/app-root/src/node_modules/tapable/lib/Hook.js: 18:14) 在 /opt/app-root/src/node_modules/webpack/lib/Compiler.js:502:20 在 Hook.eval [as callAsync] (eval at create (/opt/app-root/src/node_modules /tapable/lib/HookCodeFactory.js:33:10), :22:1) 发生未处理的异常:NGCC 失败。有关详细信息,请参阅“/tmp/ng-IZbyMh/angular-errors.log”。readRecords (/opt/app-root/src/node_modules/webpack/lib/Compiler.js:920:11) at /opt/app-root/src/node_modules/webpack/lib/Compiler.js:505:11 at Hook .eval [as callAsync] (eval at create (/opt/app-root/src/node_modules/tapable/lib/HookCodeFactory.js:33:10), :10:1) at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/ opt/app-root/src/node_modules/tapable/lib/Hook.js:18:14) 在 /opt/app-root/src/node_modules/webpack/lib/Compiler.js:502:20 在 Hook.eval [ as callAsync] (eval at create (/opt/app-root/src/node_modules/tapable/lib/HookCodeFactory.js:33:10), :22:1) 发生未处理的异常:NGCC 失败。有关详细信息,请参阅“/tmp/ng-IZbyMh/angular-errors.log”。readRecords (/opt/app-root/src/node_modules/webpack/lib/Compiler.js:920:11) at /opt/app-root/src/node_modules/webpack/lib/Compiler.js:505:11 at Hook .eval [as callAsync] (eval at create (/opt/app-root/src/node_modules/tapable/lib/HookCodeFactory.js:33:10), :10:1) at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/ opt/app-root/src/node_modules/tapable/lib/Hook.js:18:14) 在 /opt/app-root/src/node_modules/webpack/lib/Compiler.js:502:20 在 Hook.eval [ as callAsync] (eval at create (/opt/app-root/src/node_modules/tapable/lib/HookCodeFactory.js:33:10), :22:1) 发生未处理的异常:NGCC 失败。有关详细信息,请参阅“/tmp/ng-IZbyMh/angular-errors.log”。eval [as callAsync] (eval at create (/opt/app-root/src/node_modules/tapable/lib/HookCodeFactory.js:33:10), :10:1) at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/opt /app-root/src/node_modules/tapable/lib/Hook.js:18:14) 在 /opt/app-root/src/node_modules/webpack/lib/Compiler.js:502:20 在 Hook.eval [as callAsync] (eval at create (/opt/app-root/src/node_modules/tapable/lib/HookCodeFactory.js:33:10), :22:1) 发生未处理的异常:NGCC 失败。有关详细信息,请参阅“/tmp/ng-IZbyMh/angular-errors.log”。eval [as callAsync] (eval at create (/opt/app-root/src/node_modules/tapable/lib/HookCodeFactory.js:33:10), :10:1) at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/opt /app-root/src/node_modules/tapable/lib/Hook.js:18:14) 在 /opt/app-root/src/node_modules/webpack/lib/Compiler.js:502:20 在 Hook.eval [as callAsync] (eval at create (/opt/app-root/src/node_modules/tapable/lib/HookCodeFactory.js:33:10), :22:1) 发生未处理的异常:NGCC 失败。有关详细信息,请参阅“/tmp/ng-IZbyMh/angular-errors.log”。10), :22:1) 发生未处理的异常:NGCC 失败。有关详细信息,请参阅“/tmp/ng-IZbyMh/angular-errors.log”。10), :22:1) 发生未处理的异常:NGCC 失败。有关详细信息,请参阅“/tmp/ng-IZbyMh/angular-errors.log”。

0 投票
0 回答
37 浏览

angular - 无法在 Angular 的 AOT Prod 模式下获取注释

我需要在 Angular 中动态创建路由和组件。我有这样的代码块来从声明属性中获取模块中定义的组件;

我在 routeProvider 中使用此功能,如下所示;

我的实际问题是使用此类设置进行编译时无法获得注释;

如果我禁用优化,那么它在 AOT 和 JIT 中都可以正常工作。按我的预期refCap.annotations(type)[0];返回。[DecoratorFactory]我相信这是因为 TerserPlugin 删除了不必要的功能/定义。我找到了一些帖子,但无法获得任何帮助;
如何获取 Angular 2 中当前模块的元数据?
从 Angular 2 组件中访问“选择器”
所以我想知道是否有任何可能性(hacky 或适当的)使用 AOT prod mod 中的 ReflectionCapabilities 访问注释及其声明。

角度版本:10.2.3

0 投票
1 回答
32 浏览

angular - Angular:在 node_module 组件中覆盖 DatePipe

问题:我的 Angular 应用程序中有一个带有组件的外部库。其中一些组件在内部使用 Angular DatePipe 以“shortDate”格式转换日期。我真的没有选择使用任何其他组件或实现自定义组件,因为客户端需要使用该特定库。但他们当然也不想要“shortDate”格式。

我尝试扩展内置的 Angular DatePipe。如下:

这适用于我当前在我的应用程序中实现的任何自定义组件。每当我使用'my_var | date' 它会触发我的扩展管道而不是 Angular 的。

至于 node_modules 组件,它仍然会触发默认的 Angular DatePipe 而不是我的扩展。我认为这与构建角度架构的方式有关,并且编译器首先编译 node_modules。不完全确定。只是想看看是否有人遇到过类似的问题,以及是否有任何神奇的解决方案。谢谢!

0 投票
0 回答
55 浏览

angular - Angular v13 中用于动态/运行时模块的 Angular Compiler API 替换

我们正在使用编译器中的这个函数compileModuleAndAllComponentsAsync来创建一个动态/运行时模块

该编译器在 Angular v13 中已弃用

有没有人有类似的(动态/运行时模块)用例并成功替换了CompilerAPI?

0 投票
0 回答
14 浏览

angular - Nx build - 另一个 id 为 xxx 的进程当前正在运行 ngcc

我有一个包含 2 个项目的 Nx monorepo。当我在本地构建这些项目时,一切都按预期工作,但是当我尝试在构建服务器上构建相同的项目时,我得到了错误

这可能是由 command 引起的nx affected:build --all --parallel --configuration=production。这会并行运行所有构建,以某种方式同时运行两个构建ngcc,从而锁定目录中的某些文件node_modules。我很清楚。但问题是我已经尝试了几乎所有建议的修复程序,但警告仍然存在,显着减慢了构建速度,甚至在某些情况下使其失败。


版本

  • Angular:13.2.x(它在 v12.x 上给出了同样的错误)
  • Nx:13.8.x
  • 节点:v14.17.x
  • 管道:Bitbucket 管道

将 ngcc 添加到安装后

根据一些答案(herehereherehere等等),最好的解决方法是添加ngcc --properties es2015 browser module main甚至添加ngcc --properties es2015 browser module main --create-ivy-entry-points --first-onlypostinstallpackage.json 中。由于 Nx V12,这是在通过 Nx 生成新的 monorepo 时自动添加的,但似乎没有修复构建服务器上的消息(本地从未有任何问题)

( "postinstall": "node ./decorate-angular-cli.js && ngcc --properties es2015 browser module main",)

删除锁定文件

我试图在构建开始之前删除锁定文件,因为我认为可能postinstall会创建锁定文件,但不知何故没有时间删除它。但是我所有的尝试都表明在构建开始之前没有锁定文件。

脚本:

总是导致no lock file


缓存

node_modules 缓存在构建服务器中,因此可以在单独的管道步骤中使用。脚本如下:

每个步骤都使用在-stepnode上创建的缓存。install我无法验证 ngcc 结果是否存储在缓存中,但是由于在node_modules安装步骤之后整个缓存都被缓存并且 ngcc 结果被添加到 node_modules 我猜它被存储了。


由于以上都没有修复警告,我是否缺少某些东西,或者这只是 ngcc 现在的工作方式?