【问题标题】:Angular TypeError: _angular_core__WEBPACK_IMPORTED_MODULE_1__.ɵɵdefineInjectable is not a functionAngular TypeError:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ɵɵdefineInjectable 不是函数
【发布时间】:2020-06-08 07:06:11
【问题描述】:

我正在运行我的应用程序LiveCicle,当我导航到地图路线时出现此错误:

ERROR Error: Uncaught (in promise): TypeError: _angular_core__WEBPACK_IMPORTED_MODULE_1__.ɵɵdefineInjectable is not a function
TypeError: _angular_core__WEBPACK_IMPORTED_MODULE_1__.ɵɵdefineInjectable is not a function
    at tm.service.ts:9

这很奇怪,因为我将 tm 服务定义为路由模块中的提供者。

@NgModule({
 providers: [
    {
      provide:
        HTTP_INTERCEPTORS
      ,

      useClass: AuthInterceptor,
      multi: true
    },
    TicketMasterService
  ],
})
const routes: Routes = [
  {path: 'map',   loadChildren: () => import('./event-map-page/event-map-page.module').then(m => m.EventMapPageModule)},

  {path: '**', redirectTo: '', pathMatch: 'full'},

];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

我只在生产中遇到此错误。当我在本地运行时,一切正常。

import { Injectable, OnInit } from '@angular/core';
import { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';
import { environment } from '../../environments/environment';
import { DataService } from '../../services/dataService/data.service';
import { TmEvent } from '../../models/tmEvent/tm-event.model';
@Injectable()
export class TicketMasterService {
  noAuthHeader = { headers: new HttpHeaders({ 'NoAuth': 'True'})};
  private readonly TM_EVENTS = 'TM_EVENTS';
  tmEvents: any = [];
  constructor(private http: HttpClient, private data: DataService) {
  }

  fetchTmData() {
    this.http.get(environment.apiBaseUrl + '/ticketmaster-events', this.noAuthHeader).subscribe(res => {
      this.getTheFields(res);
    });
  }
}

【问题讨论】:

  • 你能粘贴 TicketMasterService 吗?
  • @Nosheep 已粘贴
  • remove providedIn: 'platform',因为您已经在模块级别拥有此服务作为提供者,反之亦然。
  • @Nosheep 仍然出现相同的错误...我还注意到,当您单击路线两次时,您会收到此错误core.js:4117 ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'ɵmod' of undefined TypeError: Cannot read property 'ɵmod' of undefined at getNgModuleDef (core.js:1880)
  • 尝试完全删除 Injectable()。

标签: angular typescript webpack lazy-loading


【解决方案1】:

我尝试过类似的问题 转到./node_modules/ng-inline-svg/lib_esmodule/svg-cache.service.js 并搜索ɵɵ 并将其删除 或点击错误并搜索ɵɵ并删除 我希望这对任何人都有用

【讨论】:

  • 这行得通,但我将如何在生产中设置它
【解决方案2】:

@Jonathan 您使用的是哪个 Angular 版本?

当我更新到 Angular 8 时,我尝试了类似的问题。

和你一样,我的应用程序在本地运行良好,但在生产环境中却不行。延迟加载或双击事件无法正常工作,并且应用程序抛出了类似的错误。

在网上冲浪后,我找到了一些解决方案,更新了 angular core、cli.. 的依赖项,但都没有解决问题。

就我而言,问题出在生产配置文件中,特别是在 tsconfig.e2e.json 文件中。但也要在 tsconfig.json 文件中查看您的本地配置。

确保您将这些参数用于 Angular 8 或更高版本:

“模块”:“esnext”, "moduleResolution": "节点", “目标”:“es5”

我希望这对某人有用...

【讨论】:

    猜你喜欢
    • 2017-07-19
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 2016-08-10
    • 2018-11-30
    • 2020-12-31
    相关资源
    最近更新 更多