Android 角度误差:静态注入误差(平台:核心)[e->;t]:

Android 角度误差:静态注入误差(平台:核心)[e->;t]:,android,angular,npm,ionic4,Android,Angular,Npm,Ionic4,当我用--prod构建APK时,我得到了下面的错误 ERROR Error: StaticInjectorError[e -> t]: StaticInjectorError(Platform: core)[e -> t]: NullInjectorError: No provider for t! at e.get (core.js.pre-build-optimizer.js:8894) at core.js.pre-build-optim

当我用
--prod
构建APK时,我得到了下面的错误

    ERROR Error: StaticInjectorError[e -> t]: 
  StaticInjectorError(Platform: core)[e -> t]: 
    NullInjectorError: No provider for t!
    at e.get (core.js.pre-build-optimizer.js:8894)
    at core.js.pre-build-optimizer.js:9139
    at e (core.js.pre-build-optimizer.js:9083)
    at e.get (core.js.pre-build-optimizer.js:8980)
    at core.js.pre-build-optimizer.js:9139
    at e (core.js.pre-build-optimizer.js:9083)
    at e.get (core.js.pre-build-optimizer.js:8980)
    at Ua (core.js.pre-build-optimizer.js:21119)
    at e.get (core.js.pre-build-optimizer.js:21808)
    at Ts (core.js.pre-build-optimizer.js:22179)
但它与爱奥尼亚Cordova build android配合良好,也与ng serve配合使用;但是我在
ngservice--prod“
中遇到了同样的上述错误


如何解决此问题?

您试图使用的服务未列在AppModule的提供程序或component.ts中。请将该服务添加到提供程序列表以使其正常工作

在app.modules中,如果您希望该服务是全局的(与应用程序上下文相关)

或者在component.ts中,如果您希望该服务与所需组件相关

@Component({
    selector: '...',
    templateUrl: '...',
    providers: [MyService]
})
import { MyService } from '../services/myservice';
不要在两个文件中都添加它。另外,在app.modules或component中插入该服务时,也不要忘记导入该服务

@Component({
    selector: '...',
    templateUrl: '...',
    providers: [MyService]
})
import { MyService } from '../services/myservice';

此问题也可能对您有所帮助:

发生这种情况是因为您没有添加用于构建模块的服务

@NgModule({
    declarations: [SampleComponent]
})
示例:

1.组件

@Component({
  selector: 'app-sample',
  templateUrl: './sample.component.html',
  styleUrls: ['./sample.component.scss']
})
export class SampleComponent implements OnInit {

constructor(private localServiceName: YourService) {
}

  ngOnInit() {
  }

}
2.模块

@NgModule({
    declarations: [SampleComponent]
})
改为

@NgModule({
    declarations: [SampleComponent]
    providers: [ YourService ]
})

对于可能需要此功能的任何人:

上述原因是一种可能抛出StaticInjectorError的情况。但是,这不是唯一的情况。在其他情况下,可能是因为您试图注入未定义的依赖项。即: a) “Dumb case”:您还没有导入服务,但还是注入了服务。大多数IDE都会为您捕获该服务 b) 复杂情况:假设您拥有依赖于其他库的自定义库,并且没有在每个库中设置正确的对等依赖项。这将导致模块之间的不一致(应用程序中同一库的不同版本)。除此之外,如果使用提前编译,则可能会发生无法从正确的模块(库版本)访问您尝试导入的服务的情况。这将导致服务=未定义,因此与案例a类似)


根据我自己的经验说话!

感谢您的回复。我已经阅读了“错误:t没有提供程序”“在发布和重新检查我的代码之前。。因为所有服务都已在app.module中定义。他们有没有办法让我检查哪些服务没有定义?我使用的是延迟加载,可能是缓存问题或其他奇怪的问题。您是否可以尝试删除节点_模块,再次运行npm安装,并通过ng服务器和--prod标记重新检查它?您是对的。在提交extramimimizers.push(新的TerserPlugin({sourceMap:scriptsSourceMap,parallel:true,cache:true,terserOptions,})之后,我丢失了提供程序;ode_modules/@angular devkit/build angular/src/angular cli files/models/webpack configs/common.js运行Ionic serve frontend——prod I是此处缺少的Onesignal提供程序