electron 电子集成的baseHref设置为./的Angular 构建错误

bkhjykvo  于 2023-09-28  发布在  Electron
关注(0)|答案(1)|浏览(151)

我正在做一个Angular项目,它将在Electron中执行。为了确保Electron可以找到必要的文件,我将baseHref设置为./。然而,这个配置破坏了我的Angular构建,特别是当它包含库时。
构建错误是一致的,涉及从Angular Material和Angular Common导入。目录是存在的,我很困惑为什么这些导入失败了。下面是一个示例错误:

Error: libs/libname/src/lib/products-table/project-overview.component.ts:21:14 - error NG3004: Unable to import directive NgIf.        
  The symbol is not exported from C:/Users/bla/node_modules/@angular/common/index.d.ts (module '@angular/common').

21 export class SomeComponent {
                ~~~~~~~~~~~~~~~~~~~~~~~~~

  libs/libname/node_modules/@angular/common/index.d.ts:2024:1
    2024 export declare class NgIf<T = unknown> {
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    2025     private _viewContainer;
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
     ...
    2062     static ɵdir: i0.ɵɵDirectiveDeclaration<NgIf<any>, "[ngIf]", never, { "ngIf": { "alias": "ngIf"; "required": false; }; "ngIfThen": { "alias": "ngIfThen"; "required": false; }; "ngIfElse": { "alias": "ngIfElse"; "required": false; }; }, {}, never, never, true, never>;
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    2063 }
         ~
    The directive is declared here.

当我删除baseHref或将其设置为/(默认值)时,问题就解决了。下面是我的配置的一个片段:

...
 "build-relative": {
            ...
            "options": {
                "outputPath": "dist/apps/project",
                "baseHref": "./",
                ...
            },
            ...
        },

有人在集成Angular和Electron时遇到过这个问题吗?如何在保持baseHref设置为./的情况下解决此问题?有没有什么编译器的设置我应该看看?项目库由nx / angular schematics使用默认schematics生成。老实说,我不知道需要什么信息来解决这个问题。更新错误只发生在我导入的库中,而不是项目本身。

我进行了研究我发现:https://github.com/angular/angular-cli/issues/14587,但我的错误似乎不相关的导入路径的图像这篇文章https://github.com/angular/angular/issues/36060也描述了这个问题。然而,在这个设置中,当我进行更改时,我需要重新编译我的项目,即使我只是服务于angular项目

bttbmeg0

bttbmeg01#

确保在angular模块中导入了CommonModule。就baseHref而言,您可以在index.html中更新<base href="./">或使用baseHref选项(如ng build --configuration production --base-href ./)构建项目

相关问题