apache / apache/cordova-node-xcode

pbxProject hasFile returns false for existing file on Windows

Aperta
#116 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
JavaScript
Stelle
217
Fork
102
Merge medio
2g 3h
PR unite (30g)
6

Descrizione

We are running into an issue with this in our Expo CLI on Windows. After some investigation, it looks like there are some issues with Posix and Windows paths when detecting if files exists or not.

I [created a repository](https://github.com/bycedric/xcode-windows-hasfile-issue) with an example running on Ubuntu, MacOS and Windows that demonstrates this issue. The scenario it's testing is fairly simple:

```js
const PBX_PROJECT_PATH = path.resolve('ios', 'testios2.xcodeproj', 'project.pbxproj');
const SPLASH_SCREEN_PATH = path.join('testios2', 'SplashScreen.storyboard');

// Create a new pbx project instance
const project = xcode.project(PBX_PROJECT_PATH);
// Now parse the project
project.parseSync();

// Determine if "SplashScreen.storyboard" exists
const file = project.hasFile(SPLASH_SCREEN_PATH);
```

You see that this is done successfully on both [Linux](https://github.com/byCedric/xcode-windows-hasfile-issue/runs/1231850644?check_suite_focus=true#step:6:8) and [MacOS](https://github.com/byCedric/xcode-windows-hasfile-issue/runs/1231850677?check_suite_focus=true#step:6:8), but [fails on Windows](https://github.com/byCedric/xcode-windows-hasfile-issue/runs/1231850707?check_suite_focus=true#step:6:8).

There is a workaround, you have to force the `SPLASH_SCREEN_PATH` to always be a posix formatted path. That works on [Linux](https://github.com/byCedric/xcode-windows-hasfile-issue/runs/1231850644?check_suite_focus=true#step:5:8), [MacOS](https://github.com/byCedric/xcode-windows-hasfile-issue/runs/1231850677?check_suite_focus=true#step:5:8), _and_ [Windows](https://github.com/byCedric/xcode-windows-hasfile-issue/runs/1231850707?check_suite_focus=true#step:5:8).

```js
const SPLASH_SCREEN_PATH = path.join('testios2', 'SplashScreen.storyboard')
// Force the path to always be a posix formatted path
.replace(path.sep, path.posix.sep);
```

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia con la chiamata a project.hasFile sul project.pbxproj indicato e riproducila usando l’esempio multipiattaforma collegato su Windows, Linux e macOS. Traccia come viene verificato lo SPLASH_SCREEN_PATH nel formato di Windows e considera completata l’issue quando viene rilevato un file esistente su Windows senza compromettere le altre piattaforme.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
javascript
Ambito
mobile-dev
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.