Skip to content

npm ERR! Unsupported URL Type "workspace:" エラーの解決方法

問題の概要

Gatsbyなどのプロジェクトで npm install を実行した際に、以下のエラーが発生することがあります:

npm ERR! code EUNSUPPORTEDPROTOCOL
npm ERR! Unsupported URL Type "workspace:": workspace:*

このエラーは、プロジェクトの package.json にワークスペース構文 (workspace:*) が含まれている場合に発生します。ワークスペース機能はnpmの標準機能ではなく、Yarnやpnpmなどのパッケージマネージャーでサポートされている機能です。

原因

このエラーの主な原因は以下の通りです:

  1. プロジェクトがYarn Workspacesまたはpnpm Workspacesを使用するように設定されている
  2. package.json の依存関係に "workspace:*" のような記述が含まれている
  3. npmではワークスペース構文がサポートされていない

解決方法

方法1: Yarnを使用する(推奨)

プロジェクトがYarn Workspaces用に設定されている場合、npmの代わりにYarnを使用します:

bash
# Yarnのインストール(未インストールの場合)
npm install -g yarn

# パッケージのインストール
yarn install

方法2: pnpmを使用する

プロジェクトがpnpm Workspaces用に設定されている場合:

bash
# pnpmのインストール
npm install -g pnpm

# パッケージのインストール
pnpm install

方法3: package.jsonの修正

一時的な解決策として、package.json 内のワークスペース参照を修正します:

json
// 修正前
"@repo/typescript-config": "workspace:*",

// 修正後
"@repo/typescript-config": "*",

WARNING

この方法は一時的な解決策であり、ワークスペース機能が意図する依存関係の解決が行われない可能性があります。チームで開発している場合は、他のメンバーと相談の上で実行してください。

方法4: 正しいパッケージマネージャーの使用

プロジェクトのルートディレクトリに以下のファイルがある場合、対応するパッケージマネージャーを使用してください:

  • yarn.lock → Yarnを使用
  • pnpm-lock.yaml → pnpmを使用

ワークスペースとは?

ワークスペースは、単一のリポジトリ内で複数のパッケージを管理するための機能です。モノレポ構造でよく使用され、以下の利点があります:

  • パッケージ間のローカル参照が容易
  • 一貫したバージョン管理
  • 一括での依存関係解決

予防策

  1. プロジェクトのREADMEを確認し、推奨されるパッケージマネージャーを使用する
  2. プロジェクトにロックファイルがある場合は、それに対応するパッケージマネージャーを使用する
  3. チーム開発では、パッケージマネージャーを統一する

まとめ

npm ERR! Unsupported URL Type "workspace:" エラーは、npmがワークスペース構文をサポートしていないことが原因で発生します。プロジェクトの設定に応じて、Yarnやpnpmなどの適切なパッケージマネージャーを使用することで解決できます。

INFO

現在のnpmバージョン(2024年時点)でもワークスペース機能は実験的段階です。本番環境ではYarnやpnpmの使用を推奨します。

正しいパッケージマネージャーを選択することで、スムーズな依存関係の解決とプロジェクトの開発が可能になります。