gpt4 book ai didi

ionic-framework - 不允许操作,在 ionic 中添加 cordova-plugin-firebase 插件时取消链接

转载 作者:行者123 更新时间:2023-12-04 11:44:26 25 4
gpt4 key购买 nike

为 android 安装“cordova-plugin-firebase”
处理 Action 时出错!正在尝试恢复...
无法安装“cordova-plugin-firebase”:错误:哦!
EPERM:不允许操作,取消链接'F:\ionic\PkjshopMerchant\platforms\android\app\src\main'
在 Object.unlinkSync (fs.js:1129:3)
在 mayCopyFile (F:\ionic\PkjshopMerchant\platforms\android\cordova\node_modules\fs-extra\lib\copy-sync\copy-sync.js:59:8)

最佳答案

正如此链接中所述:https://github.com/arnesson/cordova-plugin-firebase/issues/1154
有一个可行的解决方案,它不会降级到cordova@8.0.0
研究 firebase 插件安装过程中出现的错误消息,我们进行了调试 session ,发现在插件尝试将 google-services.json 文件从插件文件夹复制到项目文件夹时出错。
错误消息是:
处理 Action 时出错!正在尝试恢复...
无法安装“cordova-plugin-firebase-lib”:错误:哦哦!
EPERM:不允许操作,取消链接'[我的项目文件夹]\apk\platforms\android\app\src\main'
这与文件写入权限有关,但我们无法通过更改文件夹权限和索引来解决此问题。
从堆栈跟踪中,我们看到复制操作由位于 ..\apk\node_modules\fs-extra\lib\copy-sync 文件夹中的 copy-sync.js javascript 文件中的 mayCopyFile 函数处理。
这是函数体:

function mayCopyFile (srcStat, src, dest, opts) {
if (opts.overwrite) {
fs.unlinkSync(dest)
return copyFile(srcStat, src, dest, opts)
} else if (opts.errorOnExist) {
throw new Error('${dest}' already exists)
}
}
fsunlinkSync 和 copyFile 在这里调用会导致安装崩溃。我们无法进一步进行调试,也许继续进行会更好,但我们在这里停下来并找到了这个解决方案:
由于这些代码行试图从
..\apk\plugins\cordova-plugin-firebase\src\android
位置到
..\apk\platforms\android\app\src\main 目标,
我们决定手动进行此复制。
所以这里是我们遵循的步骤:
确保你有一个没有 firebase 插件的干净的cordova 项目文件夹。
拥有 android 平台 9.0.0,如果还没有:
Cordova 平台rm android
Cordova 平台添加android@9.0.0
注释掉 ..\apk\node_modules\fs-extra\lib\copy-sync copy-sync.js 文件中 mayCopyFile 函数中的 fsunlinkSync 和 copyFile 行。
安装firebase插件:
cordova 插件添加 cordova-plugin-firebase-lib@3.0.0
(我们一直在使用这个库。不幸的是,cordova-plugin-firebase 给出了其他构建错误)
看到插件安装好了,平台是android 9.0.0
Cordova 插件ls
Cordova 平台ls
从复制 google-services.json 文件
..\apk\plugins\cordova-plugin-firebase\src\android
位置到
..\apk\platforms\android\app\src\main 目标,
手动。
在cordova 构建之前,取消注释您在第3 步中注释掉的代码行,因为cordova 构建会将大量文件从某个源位置复制到某个无法手动复制的目标位置。
编辑 apk\platforms\android 文件夹中的 build.gradle 文件(适当更改 gradle 版本):
类路径 'io.fabric.tools:gradle:1.28.0'
       cordova build android

cordova run android
这奏效了。当然,我们添加了cordova-device-plugin,编辑了config.xml,将google-services.json添加到项目根文件夹等作为通常的先决条件,使插件工作。

关于ionic-framework - 不允许操作,在 ionic 中添加 cordova-plugin-firebase 插件时取消链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64602470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com