依存関係がモジュールとして宣言されていない場合、依存関係から「モジュール外でインポートステートメントを使用できません」をどのように解決しますか?
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'
が、このスレッドに関連しない他のエラーが発生します。
関連している
- SyntaxError: モジュール外で import ステートメントを使用できません— この解決策は、依存関係ではなく、制御するコードのためのものです
- ECMAScript 6 をインポートするときの「Uncaught SyntaxError: Cannot use import statement outside a module」 — これは非常に似ているようですが、ブラウザではなくノードでこのエラーが発生しています
メタデータ
- ノード: v16.2.0
- Sveltekit: v1.0.0-next.115
- バリデーター: 13.6.0