9

依存関係がモジュールとして宣言されていない場合、依存関係から「モジュール外でインポートステートメントを使用できません」をどのように解決しますか?


Svelte/kitのバリデーターを使用してメールを検証したいと考えています。ただし、ESM バージョンをインポートすると、「モジュール外で import ステートメントを使用できません」というエラーが表示されます。npm や yarn の代わりに pnpm を使用しています。

import isEmail from 'validator/es/lib/isEmail'
/node_modules/.pnpm/validator@13.6.0/node_modules/validator/es/lib/isEmail.js:1
import assertString from './util/assertString';
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at Object.compileFunction (node:vm:355:18)
    at wrapSafe (node:internal/modules/cjs/loader:1039:15)
    at Module._compile (node:internal/modules/cjs/loader:1073:27)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1138:10)
    at Module.load (node:internal/modules/cjs/loader:989:32)
    at Function.Module._load (node:internal/modules/cjs/loader:829:14)
    at Module.require (node:internal/modules/cjs/loader:1013:19)
    at require (node:internal/modules/cjs/helpers:93:18)
    at nodeRequire 

バリデーターが import ステートメントを使用しようとしているようですが、package.json が指定されていません"type": "module"。私の推測では、これがエラーの根本的な原因です。

デバッグ手順

  • package.json は"type": "module"
  • ノードの最新バージョンにアップグレード
  • Validator の非 esm バージョンを使用しようとしました'validator/lib/isEmail'が、このスレッドに関連しない他のエラーが発生します。

関連している

メタデータ

  • ノード: v16.2.0
  • Sveltekit: v1.0.0-next.115
  • バリデーター: 13.6.0
4

5 に答える 5