使用nativescript-plugin-filepicker遇nativescript-permissions依赖缺失求助
解决nativescript-plugin-filepicker依赖nativescript-permissions缺失问题
问题概述
使用@prabudevarrajan/filepicker(v2.0.0)构建NativeScript + Angular项目时,触发构建错误:
ERROR in ./node_modules/@prabudevarrajan/filepicker/index.android.js 3:0-56 Module not found: Error: Can't resolve 'nativescript-permissions' in 'E:\NativeScript\...\node_modules\@prabudevarrajan\filepicker'
原因是插件依赖的nativescript-permissions包已被禁用,项目环境为NativeScript 8.6 + Angular 16,且AndroidManifest已配置READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE等基础权限。
解决思路
1. 替换插件中的废弃权限依赖
NativeScript 8+已内置权限API,无需依赖第三方包,可通过以下两种方式修改插件引用:
- 手动修改插件源码
找到node_modules/@prabudevarrajan/filepicker/index.android.js,替换权限模块引用:
同时将插件内所有// 替换原import // import * as permissions from 'nativescript-permissions'; import { Permissions } from '@nativescript/core';permissions.requestPermission调用替换为Permissions.requestPermission,例如:// 原代码 // permissions.requestPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) // 修改后 Permissions.requestPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) - 用patch-package创建持久补丁
- 安装补丁工具:
npm install patch-package --save-dev - 修改插件文件后执行:
npx patch-package @prabudevarrajan/filepicker,生成本地补丁 - 在
package.json的scripts中添加:"postinstall": "patch-package",确保每次安装依赖后自动应用补丁
- 安装补丁工具:
2. 切换至维护活跃的替代插件
原插件依赖废弃包且更新停滞,建议替换为社区维护的@nativescript-community/filepicker,该插件适配NativeScript 8+,无需依赖废弃权限包,安装后可直接按文档集成。
3. 适配Android 13+权限规则
若项目需兼容Android 13及以上版本,需补充对应媒体权限:
在App_Resources\Android\src\main\AndroidManifest.xml中添加:
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /> <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
代码中请求权限时,需根据Android版本动态切换请求的权限类型。
内容的提问来源于stack exchange,提问作者Alex-1999
相关产品推荐
相关产品推荐

