0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

React Nativeで"Cannot parse an empty JSON string"が出てプロジェクトが作れなかった件

Posted at

React NativeだけでなくNode.jsも入門段階の森田ユウゴです。

React Nativeで開発環境を構築中、プロジェクト作成でつまづき試行錯誤しました。
この記事では、プロジェクト作成時に発生したエラーの原因と、その解決方法を記録します。

プロジェクト作成のエラー状況について

その中で、PowerShellで「npx create-expo-app プロジェクト名」を実行しても下記のようにエラーが発生しました。

PS I:\マイドライブ\ReactNative> npx create-expo-app@latest my-test-app
Creating an Expo project using the default template.

To choose from all available templates pass in the --template arg:
  $ npx create-expo-app --template

To choose from all available examples pass in the --example arg:
  $ npx create-expo-app --example

× Something went wrong in downloading and extracting the project files: Cannot parse an empty JSON string
EmptyJsonFileError: Cannot parse an empty JSON string
node:internal/bootstrap/node:123
        validateInteger(value, 'code');
        ^

TypeError [ERR_INVALID_ARG_TYPE]: The "code" argument must be of type number. Received type string ('EJSONEMPTY')
    at process.set [as exitCode] (node:internal/bootstrap/node:123:9)
    at process.exit (node:internal/process/per_thread:177:24)
    at C:\Users\junas\AppData\Local\npm-cache\_npx\956a30255ff895e3\node_modules\create-expo-app\build\index.js:116:736
    at <anonymous>
    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
    at async run (C:\Users\junas\AppData\Local\npm-cache\_npx\956a30255ff895e3\node_modules\create-expo-app\build\index.js:116:704) {
  code: 'ERR_INVALID_ARG_TYPE'
}

Node.js v22.13.0

トラブルシューティング

先に結論として「ネットワークドライブ(Google Drive)を作業フォルダにしていることが」原因でした…。

私自身がどのように対応したか思い出すために、トラブルシューティングを終えたまでの内容を時系列で記載します。

試したコト① キャッシュのクリア

コンピュータはいつの間にかゴミがたまって、プログラムが動作しないということが良くあります。
下記のコマンドでキャッシュが消せるようなので試してみました。

npm cache clean --force

エラーは無くなった!!

でも、フォルダ内に作成された「package.json」が"0KB"で空のファイルです。
その結果、次の工程で「npx expo start」をしても失敗します。

WARNING: The legacy expo-cli does not support Node +17. Migrate to the new local Expo CLI: https://blog.expo.dev/the-new-expo-cli-f4250d8e3421.
(node:16556) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
┌───────────────────────────────────────────────────────────────────────────┐
│                                                                           │
│   The global expo-cli package has been deprecated.                        │
│                                                                           │
│   The new Expo CLI is now bundled in your project in the expo package.    │
│   Learn more: https://blog.expo.dev/the-new-expo-cli-f4250d8e3421.        │
│                                                                           │
│   To use the local CLI instead (recommended in SDK 46 and higher), run:   │
│   › npx expo <command>                                                    │
│                                                                           │
└───────────────────────────────────────────────────────────────────────────┘
Starting project at I:\マイドライブ\ReactNative\my-test-app
Unable to find expo in this project - have you run yarn / npm install yet?

試したコト② PowerShellを管理者権限で実行

ダメでした。
「npx create-expo-app プロジェクト名」の時点で「Cannot parse an empty JSON string」です。

※ここでキャッシュ削除しても失敗するので、何か別の原因があるのかもしれないとハマってしまった

試したコト③ 最新版を指定

下記のとおり、create-expo-appコマンドの後ろに"@latest"を付けることで、最新版を指定できるらしい。

npx create-expo-app@latest my-todo-app

ダメでした。
「npx create-expo-app プロジェクト名」の時点で「Cannot parse an empty JSON string」です。

試したコト④ VPNで日本国内経由で接続

私は台湾在住です。
まさか…ですが、台湾からの接続は制限されている?という仮説のもと、Nord VPNで日本国内経由で接続してみました。

ダメでした。
「npx create-expo-app プロジェクト名」の時点で「Cannot parse an empty JSON string」です。

試したコト⑤ 【解決】作業フォルダをローカルドライブに変更

結論として、Google Driveのフォルダを利用していたことが原因でした。

私は普段、Google Driveにデータを格納しています。
ドライブレターも振られていいて、PowerShellでcdを出来るので気にしていなかったです…。

ホームディレクトリのDocments配下に作業フォルダを作成して、コマンドを実行したら成功しました。

振り返り

Google Driveの仕様が分からないのですが、npxコマンドを利用時にドライブ情報(ローカルかネットワークか)を見たりしているのですかね?

今回は試せてはいませんが下記の際にもローカルフォルダを指定してみる必要があるかもしれません。

  • NASなどのネットワークフォルダを利用
  • substコマンドなどで仮想ドライブを利用
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?