【问题标题】:TS1086: An accessor cannot be declared in ambient context in Angular 8 application using docker-composeTS1086:无法使用 docker-compose 在 Angular 8 应用程序的环境上下文中声明访问器
【发布时间】:2020-12-13 17:51:03
【问题描述】:

我在 Angular 8 应用程序中本地运行“ng serve”,一切正常。但是当我开始使用 docker 和 docker compose 运行应用程序时,在@zxing/ngx-scanner

上出现“无法在环境上下文中声明访问器”错误
| ERROR in ../node_modules/@zxing/ngx-scanner/lib/browser-multi-format-continuous-reader.d.ts:12:9 - error TS1086: An accessor cannot be declared in an ambient context.
|
| 12 get isTorchAvailable(): Observable;
| ~~~~~~~~~~~~~~~~
| ../node_modules/@zxing/ngx-scanner/lib/zxing-scanner.component.d.ts:104:9 - error TS1086: An accessor cannot be declared in an ambient context.
|
| 104 get codeReader(): BrowserMultiFormatContinuousReader;
| ~~~~~~~~~~
| ../node_modules/@zxing/ngx-scanner/lib/zxing-scanner.component.d.ts:108:9 - error TS1086: An accessor cannot be declared in an ambient context.
|
| 108 set device(device: MediaDeviceInfo | null);
| ~~~~~~
| ../node_modules/@zxing/ngx-scanner/lib/zxing-scanner.component.d.ts:116:9 - error TS1086: An accessor cannot be declared in an ambient context.
|
| 116 get device(): MediaDeviceInfo | null;
| ~~~~~~
| ../node_modules/@zxing/ngx-scanner/lib/zxing-scanner.component.d.ts:120:9 - error TS1086: An accessor cannot be declared in an ambient context.
|
| 120 get formats(): BarcodeFormat[];
| ~~~~~~~
| ../node_modules/@zxing/ngx-scanner/lib/zxing-scanner.component.d.ts:126:9 - error TS1086: An accessor cannot be declared in an ambient context.
|
| 126 set formats(input: BarcodeFormat[]);
| ~~~~~~~
| ../node_modules/@zxing/ngx-scanner/lib/zxing-scanner.component.d.ts:130:9 - error TS1086: An accessor cannot be declared in an ambient context.
|
| 130 get hints(): Map<DecodeHintType, any>;
| ~~~~~
| ../node_modules/@zxing/ngx-scanner/lib/zxing-scanner.component.d.ts:134:9 - error TS1086: An accessor cannot be declared in an ambient context.
|
| 134 set hints(hints: Map<DecodeHintType, any>);
| ~~~~~
| ../node_modules/@zxing/ngx-scanner/lib/zxing-scanner.component.d.ts:138:9 - error TS1086: An accessor cannot be declared in an ambient context.
|
| 138 set isAutostarting(state: boolean | null);
| ~~~~~~~~~~~~~~
| ../node_modules/@zxing/ngx-scanner/lib/zxing-scanner.component.d.ts:142:9 - error TS1086: An accessor cannot be declared in an ambient context.
|
| 142 get isAutostarting(): boolean | null;
| ~~~~~~~~~~~~~~
| ../node_modules/@zxing/ngx-scanner/lib/zxing-scanner.component.d.ts:146:9 - error TS1086: An accessor cannot be declared in an ambient context.
|
| 146 set torch(on: boolean);
| ~~~~~
| ../node_modules/@zxing/ngx-scanner/lib/zxing-scanner.component.d.ts:150:9 - error TS1086: An accessor cannot be declared in an ambient context.
|
| 150 set enable(enabled: boolean);
| ~~~~~~
| ../node_modules/@zxing/ngx-scanner/lib/zxing-scanner.component.d.ts:154:9 - error TS1086: An accessor cannot be declared in an ambient context.
|
| 154 get enabled(): boolean;
| ~~~~~~~
| ../node_modules/@zxing/ngx-scanner/lib/zxing-scanner.component.d.ts:158:9 - error TS1086: An accessor cannot be declared in an ambient context.
|
| 158 get tryHarder(): boolean;
| ~~~~~~~~~
| ../node_modules/@zxing/ngx-scanner/lib/zxing-scanner.component.d.ts:162:9 - error TS1086: An accessor cannot be declared in an ambient context.
|
| 162 set tryHarder(enable: boolean);
| ~~~~~~~~~
|
| ** Angular Live Development Server is listening on 0.0.0.0:4200, open your browser on http://localhost:4200/ **
| ℹ 「wdm」: Failed to compile.

有人知道原因吗?在修复之前我无法测试我的应用。

在我的 Angular 8 应用程序中启用 PWA 后,会遇到 docker-compose build 中的问题。通常当我做“ng serve”编译成功时没有任何错误。

Package.json:

"@angular/animations": "^8.2.14",
"@angular/cdk": "^8.2.3",
"@angular/common": "^8.2.14",
"@angular/compiler": "^8.2.14",
"@angular/core": "^8.2.14",
"@angular/flex-layout": "^7.0.0-beta.23",
"@angular/forms": "^8.2.14",
"@angular/material": "^7.3.2",
"@angular/platform-browser": "^8.2.14",
"@angular/platform-browser-dynamic": "^8.2.14",
"@angular/router": "^8.2.14",
"@zxing/ngx-scanner": "3.0.0"

我找到了一些在tsconfig.json中添加skipLibCheck的解决方案,我不想跳过lib check。

"angularCompilerOptions": { 
      "skipLibCheck": true 
}

谁能帮我解决这个问题。提前致谢。

【问题讨论】:

    标签: node.js typescript angular-cli angular8


    【解决方案1】:

    我可以看到您使用的 Angular 版本 8。 ngx-scanner 最新版本不支持 Angular 8。

    有两种解决方案:

    1. 将 angular 更新到版本 12 以使用最新的 ngx-scanner 版本。
    2. 将 ngx-scanner 降级到 ~2.0.1

    【讨论】:

      【解决方案2】:

      在尝试启用 PWA 时,我错过了一些配置,我能够找到问题并修复。也测试出来了,问题不是因为@zxing/ngx-scanner

      感谢所有花时间寻找问题根源的人。

      【讨论】:

      • 我遇到了完全相同的错误,你是怎么解决的?
      • 您是否在应用程序中启用了 PWA?
      • 也许添加解决方案作为答案,而不仅仅是“解决它”。
      • 我也遇到同样的问题,请添加解决方案
      猜你喜欢
      • 2020-05-22
      • 2020-05-24
      • 2021-07-09
      • 2020-03-07
      • 1970-01-01
      • 2020-07-21
      • 2020-07-09
      相关资源
      最近更新 更多