错误:无法在--prod中确定OverlayPortal类的模块

问题描述 投票:4回答:8

我不确定我只面对ionic cordova run android --prod的问题,我的ionic cordova run android工作正常。

错误:

Error: Cannot determine the module for class OverlayPortal in /Users/gopi/Documents/bos/hybrid-app/node_modules/ionic-angular/es2015/components/app/overlay-portal.d.ts! Add OverlayPortal to the NgModule to fix it.
Cannot determine the module for class IonicApp in /Users/gopi/Documents/bos/hybrid-app/node_modules/ionic-angular/es2015/components/app/app-root.d.ts! Add IonicApp to the NgModule to fix it.
Cannot determine the module for class ClickBlock in /Users/gopi/Documents/bos/hybrid-app/node_modules/ionic-angular/es2015/components/app/click-block.d.ts! Add ClickBlock to the NgModule to fix it.
Cannot determine the module for class Slides in /Users/gopi/Documents/bos/hybrid-app/node_modules/ionic-angular/es2015/components/slides/slides.d.ts! Add Slides to the NgModule to fix it.

有人能给我清楚的解释:

这是我的ionic info

cli包:(/ usr / local / lib / node_modules)

@ionic/cli-utils  : 1.9.2
ionic (Ionic CLI) : 3.9.2

全球套餐:

Cordova CLI : 7.0.1

本地包裹:

@ionic/app-scripts : 1.3.8
Cordova Platforms  : android 6.2.3 ios 4.4.0
Ionic Framework    : ionic-angular 3.4.2

系统:

Android SDK Tools : 25.2.5
Node              : v6.11.1
npm               : 3.10.10
OS                : macOS Sierra
Xcode             : Xcode 8.3.2 Build version 8E2002
angular cordova ionic2 ionic3 node-modules
8个回答
9
投票

我终于找到了解决这个问题的方法。我从ionic-angular导入了一些直接导入嵌套组件的导入,而不是从顶级包导出导入。我猜测产品AOT编译器不喜欢从顶层导入一些导入,而是直接导入嵌套项目。我的一个例子如下。我的猜测是你可以选择其中一种方法,但在混合它们时,AOT编译器会不高兴。

import { LoadingController } from 'ionic-angular';

import { LoadingController } from 'ionic-angular/components/loading/loading-controller';


2
投票

这个解决方案对我有用。使用npm i安装所有组件后,单独安装typescript版本2.8.1

npm install [email protected]

再次运行构建


1
投票

我有同样的问题然后我改变了我的离子角度导入地址之一。以前是

import { AlertController } from "ionic-angular\umd\components\alert"

我把它改成了

import { AlertController } from "ionic-angular"

现在它为我工作。


1
投票

这将有助于您解决此问题。

https://stackoverflow.com/a/55832874/849870

我解决了我的问题。在我的项目中,我使用的是过时的模块,ion-datepicker,如果你也使用相同的问题,这里有一些步骤,你可以关注并找到你感染或过时的模块。

1.第一步:

在你的项目中查找所有文件from 'ionic-angular/字,

2.第二步:

如果你发现这个词像import { xyz } from 'ionic-angular/xyz/abc'

更新或删除该模块。


0
投票

在我的情况下,这是因为我有一个模块的备份,我有

MyModule
|- MyModule.ts -> class MyModule {}
MyModuleOld
|- MyModule.ts -> class MyModule {}

0
投票

正如建议here,删除页面接口参考。更改

let page: Page;

let page;

0
投票

安装Diagnostic后出现此错误

npm install --save @ionic-native/diagnostic@4

我恢复我的package.json然后删除并添加更新的android平台

ionic cordova platform rm android && ionic cordova platform add android@latest

它已经解决了。


0
投票

--prod使用aot编译。但是,如果你只想为发布版编译只使用--release flag,但是你没有使用aot的功能

© www.soinside.com 2019 - 2024. All rights reserved.