ionic2 ionic 打包报错

ionic2+问题集锦(持续更新)

2017-09-05  本文已影响807人  YuRi_1
1.打包后无样式(多在加prod打包后):

此类情况多出现在用淘宝镜像cnpm进行下载依赖所引起,尝试删除本地node_modules,开启vpn,重新npm install(切记不要用cnpm,如果没有vpnvpn推荐,30 ,50一年,本人一直在用,挺好的)。

2.升级为3.X版本后,使用懒加载,在自己代码没问题的情况下,老是报一些找不到module的错误
Cannot find module '../pages/tabs/tabs.module' 

解决方法同上。

3.用storage进行本地存储时拿不到值

storage操作是异步的,尝试在页面的构造器里去操作storage,then方法里去取值。

4.2个ion-datetime在同一个item里时,点击都触发的问题:

在此页面的scss文件里加

 ion-datetime {
    position: relative;
  }
5.改变popover的宽度等
.popover名字 .popover-content{
  width: XXX;
}

6.改变导航栏颜色

在variables.scss里加$toolbar-ios-background:XXX

7.部分手机运行,list横线不显示问题

在variables.scss里加

$hairlines-width: 1px;
$list-border-color: #e0dfe4;
8.真机本地图片不显示问题

图片路径从assets开始

9.ion-searchbar按键盘搜索键触发

(ionInput)方法改为(search)

10.一些触发事件

ion-selection-toggleionChange
ion-tabionSelect

11.添加插件时报cordova-fetch等错误

一般是cordova版本7.0以上出现,尝试命令行加--nofetch试试,或者cordova版本降到6.5.0版本

12.添加android 平台时报错找不到Api.js

解决办法同上,cordova 退回6.5.0版本

13.一些退出登录或者修改密码后需重新跳转至LoginPage的情况

this.app.getRootNav().setRoot('LoginPage');

14 在build ios 时报错
Error: Error code 65 for command: xcodebuild with args: -......

尝试remove ios platform ,重新add,如果还是不行,
删除cordova-plugin-console插件再试

15 新建项目打包报错

类似
这是因为file插件升级后不支持cordova-android@6.1.2
可以升级或者装file插件的低版本(4.3.3版本可用)

16 ionic项目页面增多,代码量大的时候打包报错FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

打开node_modules/.bin/ionic-app-scripts.cmd
将内容替换为:

@IF EXIST "%~dp0\node.exe" (
  "%~dp0\node.exe"  "%~dp0\..\@ionic\app-scripts\bin\ionic-app-scripts.js" %*
) ELSE (
  @SETLOCAL
  @SET PATHEXT=%PATHEXT:;.JS;=;%
  node --max_old_space_size=4096  "%~dp0\..\@ionic\app-scripts\bin\ionic-app-scripts.js" %*
)

来源

后经测试,发现还是不行,目前解决办法是 升级node和npm

18年5月23日更新:

后来发现一种更好的处理方式,轻易可以解决:
package.json里加上

  "config": {
    "ionic_source_map_type": "cheap-source-map"
  }

来源,duydao的回答

17 File Opener插件在android8以上打不开apk

在config.xml里加上

 <platform name="android">
        <config-file parent="/manifest" target="AndroidManifest.xml" xmlns:android="http://schemas.android.com/apk/res/android">
            <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
        </config-file>
    </platform>

来源

后经测试发现另一个问题,在targetSdkVersion设置为23以上版本时,会报错 exposed beyond app through Intent.getData()

解决方法:把targetSdkVersion设置为23,另一种方法改动较大
来源
方法2(未经测试)

18年5月11日更新:

后来发现解决报错 exposed beyond app through Intent.getData()的最优解决办法,由于github的代码作者没有及时更新代码至npm,其实最新版的插件已经解决了这个问题,用命令cordova plugin add https://github.com/pwlin/cordova-plugin-file-opener2.git添加插件,不要用ionic官网和github上的ionic cordova plugin add cordova-plugin-file-opener2的命令,添加完插件后打包,发现又报另外一个代码的错误

image.png
如图,问题出在Build.VERSION.CODE.N上,解决这个,先在github上下载插件到本地,然后手动修改FileOpener2.java文件的第110行,将Build.VERSION.CODE.N改为数字24,然后添加本地的修改后的插件,ionic cordova plugin add 本地插件目录,最后重新打包,问题解决。
18 改变ion-item的高度

min-height属性

19 自定义页面返回事件

(1)导航栏的返回按钮
在html页面: <ion-navbar #navbar> </ion-navbar>
在ts:

import {ViewChild } from '@angular/core';

@ViewChild('navbar') navBar: Navbar;

  ionViewDidEnter() {
    let me = this;
    me.navBar.backButtonClick = () => {
                .....
    };
  }

(2)android实体按键的返回

import { Platform } from 'ionic-angular';

 unregister:any; 

public platform: Platform,

    //构造函数中:在此页面单独控制android实体返回按键
 this.unregister=this.platform.registerBackButtonAction(() => {
    
    }, 2);

 ionViewWillLeave() {
    let me = this;
    //移除实体返回按键监听
    me.unregister();
  }
20 新建ionic项目报错

一般是报错什么ECONNRESET什么utils第多少多少行
解决方法:是网络原因(具体我也不知道),用4G网络,可以手机开热点

21 alert等弹出框阻止关闭

return false

22用moment.js指定时间赋值给ion-datetime,时间差8小时的问题
上一篇 下一篇

猜你喜欢

热点阅读