【问题标题】:Module parse failed: Unexpected character '#' in an Angular Project模块解析失败:Angular 项目中出现意外字符“#”
【发布时间】:2022-06-21 20:19:27
【问题描述】:

当我尝试在 Angular 项目中使用私有字段时出现此错误。

Error: ./src/app/_helpers/sample.js 6:11
Module parse failed: Unexpected character '#' (6:11)
File was processed with these loaders:

./node_modules/@angular-devkit/build-angular/src/babel/webpack-loader.js
./node_modules/@ngtools/webpack/src/ivy/index.js
./node_modules/source-map-loader/dist/cjs.js
You may need an additional loader to handle the result of these loaders.

sample.js 文件:

class Sample {

constructor() {
   this.#reloadConfig(); // 6th line
}

#reloadConfig() {
}

EDIT:可以通过将 Angular 从 11 升级到 12 来解决它,看来 Angular 11 不支持在 JS 文件中声明的 private 方法。

【问题讨论】:

标签: javascript angular webpack


【解决方案1】:

您只需要使用private 关键字并删除#

class Sample {
   constructor() {
      this.reloadConfig();
   }

   private reloadConfig() {
   }
}

TypeScript 的 private 声明的属性适用于所有目标——甚至是 ECMAScript 3! — Microsoft DevBlog

【讨论】:

  • 从 TypeScript 3.8+ 开始,TypeScript/Angular 支持私有字段。此问题介于成员stackoverflow.com/questions/59641564/… 的编译时可访问性和运行时可访问性之间
  • 但这是一个 JS 文件而不是 TS,也是私有的,仅适用于编译时而不是运行时。
猜你喜欢
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
  • 2022-12-31
  • 2017-04-04
  • 2019-07-18
  • 2019-05-20
  • 2017-09-17
  • 1970-01-01
相关资源
最近更新 更多