我不确定我是仅在ionic cordova run android --prod
处理问题而我的ionic cordova run android
工作正常。
ERROR:
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
答案 0 :(得分:9)
我终于找到了解决这个问题的方法。我从ionic-angular
导入了一些直接导入嵌套组件的导入,而不是从顶级包导出导入。我猜测产品AOT编译器并不喜欢从顶层导入一些导入,而是直接导入嵌套项目。我的一个例子如下。我的猜测是你可以选择这些方法中的任何一种,但是在混合它们时,AOT编译器不会感到高兴。
不可强>
import { LoadingController } from 'ionic-angular';
<强>为强>
import { LoadingController } from 'ionic-angular/components/loading/loading-controller';
答案 1 :(得分:1)
我遇到了同样的问题,然后我更改了一个离子角导入地址。 以前是
import { AlertController } from "ionic-angular\umd\components\alert"
我将其更改为
import { AlertController } from "ionic-angular"
现在它对我有用。
答案 2 :(得分:1)
此解决方案对我有用。安装与NPM我所有组件后,安装单独打字稿2.8.1版
npm install typescript@2.8.1
再次运行构建
答案 3 :(得分:1)
这将帮助您解决此问题。
https://stackoverflow.com/a/55832874/849870
我解决了我的问题。在我的项目中,我使用了过时的模块ion-datepicker
如果您还使用同一问题,请按照以下步骤操作,找到并发现已感染或过时的模块。
1。第一步:
在项目中的所有文件中查找
from 'ionic-angular/
字
2。第二步:
如果您发现这个词像
import { xyz } from 'ionic-angular/xyz/abc'
更新或删除该模块。
答案 4 :(得分:0)
在我的情况下,这是因为我有一个模块的备份,我有
MyModule
|- MyModule.ts -> class MyModule {}
MyModuleOld
|- MyModule.ts -> class MyModule {}
答案 5 :(得分:0)
答案 6 :(得分:0)
在安装诊断程序后,我遇到了此错误
npm install --save @ionic-native/diagnostic@4
我还原了package.json,然后删除并添加了
更新的android平台ionic cordova platform rm android && ionic cordova platform add android@latest
解决了。
答案 7 :(得分:0)
-使用aot进行prod编译。但是,如果您只想为发布而编译,则仅使用--release标志,但会失去aot的功能
答案 8 :(得分:0)
1)搜索项目中出现的“页面”并将其删除。
使用Ubuntu或Mac终端通过点击进行快速搜索:
> grep -r ": Page" src/*
//then
> grep -r ":Page" src/*
像这样删除它:
//let page:Page;
//becomes
let page;
//and remove the import in the top of the file
2)搜索项目中出现的“ ionic-angular / xxxxxx”,并将其删除。
grep -r "from \'ionic-angular\/" src/*
如果您使用的是“ ionic-angular / xxxxxx”,则只需将其更改为“ ionic-angular”,即可进入Ionic文档并检查组件:
答案 9 :(得分:0)
在我的情况下,这是我创建的Pipe(将其命名为“ CustomPipe”),并且我没有使用它,所以我没有在PipesModule中声明它。
我有4个管道,其中3个在PipesModule中使用,声明和导出。但是没有在任何地方声明“ CustomPipe”,所以当我运行ionic cordova build android --prod
时,出现以下错误:
ERROR in : Cannot determine the module for class CustomPipe in .../app/pipes/custom.pipe.ts! Add CustomPipe to the NgModule to fix it.
由于我没有使用它,所以我删除了它,并且效果很好。
答案 10 :(得分:0)
这是一个对我有用的修复程序。
在app.module.ts中,添加以下内容:
import { OverlayPortal } from 'ionic-angular/components/app/overlay-portal';
import { ClickBlock } from 'ionic-angular/components/app/click-block';
import {IonicApp as IonicAppRoot} from 'ionic-angular/components/app/app-root';
...
declarations: [
...
OverlayPortal,
IonicAppRoot,
ClickBlock,
],
答案 11 :(得分:0)
以上解决方案都不适合我,但我终于解决了。
简单地将 {OverlayPortal}
导入到 app.module.ts
中,因为打字稿告诉我这样做并修改了网址。
import { OverlayPortal } from "../../node_modules/ionic-angular/components/app/overlay-portal.d";
然后将其添加到 NgModule 中的“声明”
@NgModule({
declarations: [
OverlayPortal
然后再次运行 ionic capacitor build android --prod
,错误消失了。