NativeScript / NativeScript/plugins
[imagepicker] IOS - Uncaught Error: The file *** couldn't be opened.
還沒有人認領這個 Issue。
- 主要語言
- TypeScript
- 星號
- 206
- 分支
- 123
- 平均合併
- 2 天 1 小時
- 30 天內合併 PR
- 1
描述
Issue: Every once in a while the following error occurs when selecting an image with the image picker.
This mostly happens "the first time" a picure is selected after opening the app. Following the exact same steps most times the imagepicker works as expected without throwing the error. It only occurs sometimes without any changes to the code, process, etc. Sentry tells it happens more often. The issue happens on IOs 16.4, and 17.1, and probally other versions.
Log:
on device 9B1D4E42-9CE9-452E-B84F-EE40C6D438F4.
Error while parsing debug response object. Error: BINDINGS: string value expected
authorizing...
***** Fatal JavaScript exception - application has been terminated. *****
NativeScript encountered a fatal error: Uncaught Error: The file ‚ *** couldnt' be opened.
at
_loop_2(file: src/webpack:/groeigids/node_modules/@nativescript/imagepicker/index.ios.js:142:0)
at (file: src/webpack:/groeigids/node_modules/@nativescript/imagepicker/index.ios.js:152:0)
at timer(file: src/webpack:/groeigids/node_modules/zone.js/fesm2015/zone.js:2561:0)
at invokeTask(file: src/webpack:/groeigids/node_modules/zone.js/fesm2015/zone.js:406:0)
at runTask(file: src/webpack:/groeigids/node_modules/zone.js/fesm2015/zone.js:178:0)
at invokeTask(file: src/webpack:/groeigids/node_modules/zone.js/fesm2015/zone.js:487:0)
at ZoneTask.invoke(file: src/webpack:/groeigids/node_modules/zone.js/fesm2015/zone.js:476:0)
at data.args.(file: src/webpack:/groeigids/node_modules/zone.js/fesm2015/zone.js:2541:0)
at invoke(file: src/webpack:/groeigids/node_modules/@nativescript/core/timer/index.ios.js:54:0)
at invoke(file: src/webpack:/groeigids/node_modules/zone.js/fesm2015/zone.js:372:0)
at runGuarded(file: src/webpack:/groeigids/node_modules/zone.js/fesm2015/zone.js:144:0)
at (file: src/webpack:/groeigids/node_modules/zone.js/fesm2015/zone.js:128:0)
at TimerTargetImpl.tick(file: src/webpack:/groeigids/node_modules/@nativescript/core/timer/index.ios.js:18:0)
Code and setup:
public pickImage(options?: OptionsCommon, hostView?: View): Promise {
// Create image picker
const p = imagePicker.create({
mode: 'single',
maximumNumberOfSelection: 1,
mediaType: ImagePickerMediaType.Image,
}, hostView); // Hostview is important to render on top of a modal
// Authorization is required (allow app to ...)
return p.authorize()
.then(() => p.present()) // Present the imagepicker
.then((selection) => {
const imagePickerSelection = selection[0];
return Promise.all([Promise.resolve(imagePickerSelection.asset), isIOS ?
ImageSource.fromAsset(imagePickerSelection.asset) : null]);
})
.then((f: [ImageAsset, ImageSource]) => this.processPickedImage(f, options))
.catch(reason => Promise.reject(this.processPickingFailure(reason)));
}
The key NSPhotoLibraryUsageDescription has been added to info.plist
The error occurs after the p.present() and picking the image.
貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
研究方向
從 @nativescript/imagepicker/index.ios.js 第 142 行附近的 _loop_2 開始,追蹤所提供的 pickImage 流程中 p.present() 之後的路徑。在列出的 iOS 版本上重現首次選取失敗的問題。當間歇性檔案開啟錯誤不再終止應用程式時,即表示完成。
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- ios, typescript
- 領域
- mobile-dev
- Issue 類型
- 缺陷
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 活躍度
- 停滯
- 描述清晰度
- 基本清楚
- 新手友好度
- 35/100