npm 错误

config.xml文件读取错误
执行命令:ionic cordova run android -l -c

出现错误:cp: copyFileSync: could not write to dest file (code=ENOENT):E:\work\app\cloudMall\platforms\android\res\xml\config.xml


image.png

E:\work\app\cloudMall1\platforms\android\res

发现目录缺少很多文件
解决:再次尝试remove android平台重新添加。
但是问题依然存在。


image.png

发现add 的是最新的7.0
重新制定版本添加android平台

ionic cordova platform add android@6.4.0

结果成功添加,res目录里面终于有文件了。


image.png


作者:面迎清风醉
链接:https://www.jianshu.com/p/f4b681b67868
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

ionic cordova 中插件一旦添加到项目中,以后如需对插件进行升级,需先卸载掉原先的插件,在重新安装

 
Error: Failed to fetch plugin cordova-plugin-tts via registry.
    Probably this is either a connection problem, or plugin spec is incorrect.
    Check your connection and plugin name/version/URL.
    Error: cmd: Command failed with exit code 1 Error output:
    'C:\Windows\system32\npm' is not recognized as an internal or external command,

operable program or batch file.

Try running the install command with --nofetch switch.

npm ERR! errno -4048,Error: EPERM: operation not permitted,)解决方法


npm cache clean --force

npm install -g npm@latest --force

Fatal: Unable to connect to github.com


The problem was the git port is restricted.
I fixed this with:
git config --global url.https://github.com/.insteadOf git://github.com/

failed to install 'cordova-plugin-whitelist': Error: ENOENT: 

no such file or directory AndroidManifest.xml

you are using cordova 7.0.0 or cordova 8.0.0, similar issue is observed with IONIC as well

You will find this issues with most of the plugins such as admobpro, admob, itablet, whitelist etc.

Better for now roll back to previous cordova version i.e 6.3.0 or 6.4.0

If you see mentioned issues with any of plugins try this.

cordova platform remove android
cordova platform add android@6.3.0 

OR

cordova platform remove android
cordova platform add android@6.4.0

自从升级android studio2.3.1后,运行ionic项目时无法再在android平台上启动。网上查了很多信息后,得知是android sdk废弃android命令,以及改变了目录结构。

解决办法如下:

 android版本问题

  • 移除android sdk目录的tools文件夹

  • 下载 
    https://dl.google.com/android/repository/tools_r25.2.3-linux.zip

  • 解压出来,将解压得到的tools文件夹复制到android sdk目录下


检查现有平台所需要安装的依赖包。

[javascript] view plain copy
  1. <span style="font-size:18px;">$ionic cordova requirements</span>  

更新SDK
[javascript] view plain copy
  1. $D:\work\android\android-sdk-windows\tools\android.bat 

npm错误:无法建立tunneling套接字,原因=连接ETIMEDOUT(npm error: tunneling socket could not be established, cause=connect ETIMEDOUT)

npm ERR! code ECONNRESET

npm ERR! network tunneling socket could not be established, cause=connect ETIMEDOUT 198.105.254.228:8080
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network and is related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help config'

Removing the proxy settings resolved the issue:

npm config rm proxy
npm config rm https-proxy

npm config set registry=http://registry.npmjs.org/

npm config set strict-ssl false



安装一个依赖包报错了,npm WARN checkPermissions Missing write access

权限解决办法

 
删除掉 C:\Users\dd\AppData\Roaming\npm-cache\

C:\Users\dd\AppData\Roaming\npm\  两个文件夹 以管理员身份重新执行 npm install -g



[GFailed to restore plugin "cordova-plugin-statusbar" from config.xml. You might need to try adding it again.

Error: Failed to fetch plugin https://github.com/apache/cordova-plugin-statusbar.git via registry.

cordova plugin add https://github.com/apache/cordova-plugin-statusbar.git

插件问题:检查package.json文件的版本号

                  切换npm 源头

                   去cordova plugin 官网上找插件及使用

                去github上找cordova插件 注意搜索关键词

[2K?[GFailed to restore plugin "cordova-plugin-geolocation" from config.xml. You might need to try adding it again

. Error: Failed to fetch plugin cordova-plugin-geolocation@~2.4.4-dev via registry.

Plugin doesn't support this project's cordova-android version. cordova-android: 7.0.0, failed version requirement:
      <6.3.0
cordova run android
(node:19192) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Android SDK not found. Make sure that it is installed. If it is not at the default location, set the ANDROID_HOME environment variable.

下面的报错是cordova run android时报的,其实android_home是存在的,根本问题是上面的报错,cordova-android版本高于需求版本,需求版本低于6.3.0

  1. cordova platform rm android
  2. cordova platform remove android
  3. cordova platform add android@6.2.0
    好像第2步与第一步重复,可以省略,执行后就ok了
    然后 cordova run android:
    这里写图片描述

参考:https://cordova.apache.org/blog/

以上命令:
  1. cordova run android
  2. cordova platform rm android
  3. cordova platform remove android
  4. cordova platform add android

报错如下:

npm ERR! path E:\ionic3-leafletdemo-master\node_modules\dashdash
npm ERR! code EEXIST
npm ERR! errno -4075
npm ERR! syscall mkdir
npm ERR! EEXIST: file already exists, mkdir 'E:\ionic3-leafletdemo-master\node_modules\dashdash'
npm ERR! File exists: E:\ionic3-leafletdemo-master\node_modules\dashdash
npm ERR! Move it away, and try again.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\lenovo\AppData\Roaming\npm-cache\_logs\2018-04-13T08_54_14_093Z-debug.log

 optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.3 (node_modules\ionic\node_modules\fsevents):

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\ch
okidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@
1.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"}
)
npm WARN ajv-keywords@3.1.0 requires a peer of ajv@^6.0.0 but none was installed

 fsevent是mac osx系统的,在win或者Linux下使用了 所以会有警告,忽略即可。

安装webpack出现警告: fsevents@^1.0.0 (node_modules\chokidar\node_modules\fsevents):

警告如下:

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.17: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN vue-loader-demo@1.0.0 No description
npm WARN vue-loader-demo@1.0.0 No repository field.

原因是因为: fsevent是mac osx系统的,在win或者Linux下使用了 所以会有警告,忽略即可。意思就是你已经安装成功了。

npm install 时遇见
这里写图片描述

npm install --global --production windows-build-tools 

3. 在成功安装ionic 后,继续安装 报错中缺失的 '@ionic/app-scripts',

npm install @ionic/app-scripts@latest --save-dev
-save-dev是指将包信息添加到devDependencies,表示你开发时依赖的包裹。
-save是指将包信息添加到dependencies,表示你发布时依赖的包裹。

错误信息

Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.

解决方法

在“/node_modules/@ionic/app-scripts/dist/sass.js”路径的“sass.js”文件,在postcssOptions参数中添加“from: undefined”。添加后效果如下:

[plain]  view plain  copy
  1. var postcssOptions = {  
  2.     from: undefined,  
  3.     to: path_1.basename(sassConfig.outFile),  
  4.     map: autoPrefixerMapOptions  
  5. };  



报错的原因:
cordova在6.4.0(cordova-android在6.1.2)之后,会要求安装Gradle,基于Gradle来编译、打包android。(具体版本号有待考证,但是需要安装Gradle属实)

解决办法:

1、手动下载gradle
gradle-x.x-bin.zip (x.x代表版本)
根据需要下载某一版本
地址: (https://services.gradle.org/distributions)
我下载的是gradle-4.1

下载完成后,解压到任意文件夹下

2、添加环境变量
PATH=D:\gradle-4.1\bin

3、关闭cmd

4、打开cmd,输入gradle -v,查看是否安装成功

5、继续使用ionic cordova build android。

INSTALL_FAILED_UPDATE_INCOMPATIBLE

原因:就是你的安装包与之前设备上的安装包签名不一致。百度的时候,有的人说:运行太多次也会出现上述的问题,但我没遇到过。

简单处理

如果你的程序只是自己跑着玩的,不是很重要的程序,那么你就改个包名就好了。之前,我都是这样处理的。

步骤:如图:

 

但是实际工作中,是不允许我们改包名,比如关联到了微信,支付宝,百度地图等,我们的包名是有提交到他们的官网上的。

那么怎么办呢?

提供一个比较坑的方法:如果是测试手机,那么格式化测试手机就好了。

以下是比较完整的一次排查过程:

问题:调试的时候,用的是默认签名的方式(即debug签名),导出的时候,用的是自己的debug签名,在同一台手机上安装不上。

解决过程:

如果你以前的程序是采用默认签名的方式(即debug签名),一旦换了新的签名应用将不能覆盖安装,必须将原先的程序卸载掉,才能安装上。

------> 别人都是卸载之后就可以安装上了,但是我的手机不行。

------> 我 :卸载了旧的,也root,删掉了data/data/包名。

------> 安装提示:替换应用,销售小助手1.0替换为1.0..提示程序未安装。

------> 是不是 系统 保存了相关的 包名和签名信息 ? 

------> 是的话,也百度不到这个信息放哪里了。

继续百度:发现包名信息存放在 /data/system/packages.xml 中,需要root手机才可以从手机上看到这个文件。

------> 我们删除该应用包含的包名信息就好了。

步骤:

1. 采用 "adb uninstall 包名"  卸载之前的安装包,然后试一下是否能安装,不行再执行下一步。 --- 正常,执行这步就能解决问题

2. 在 /data/system/packages.xml 文件中删除该应用包含的包名信息就好了

   2.1 我的做法:root手机,我的是魅族,直接可以root。之后安装RE管理器,进入/data/system/packages.xml把该文件复制到其他地方,共享到电脑,电脑上修改后,在覆盖原文件。

   参考做法:我的手机不行。 -- 都要root手机

   2.2 使用adb pull命令将这个文件导出,修改完,并用 adb push导入。

   2.3 上述步骤不行,先adb remount (意思是 重新挂载系统分区)再adb pull命令将这个文件导出,修改完,并用 adb push导入。

   2.4 上述步骤不行,

         ---> 执行  adb shell  命令  -- 执行的是Linux的命令

         ---> su (手机应该会弹出权限信息提示~~告诉你需要管理权限,并确认)  -- 获得超级权限

         ---> ls -l (查看当前目录下所有可见文件的详细属性)  drwxrwx--x   (d--文件夹)

                

               这边怎么跑出一个system?回答:没有听说过Android除了Root还有system权限  你说的是user权限吧

               参考:http://bbs.csdn.net/topics/360175988

         ---> mount -o remount,rw /data (重新将文件夹为可读可写。)  我的手机出现( Operation not permitted),没办法下一步

         ---> chmod 777 /data 

         或者参考别人的做法:http://blog.sina.com.cn/s/blog_4ba5b45e0102ek4k.html 

   2.5 在不行,使用2.1方法。

3. 重新安装新的应用即可






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路途…

点滴记录

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值