node.js エラー「SyntaxError: Cannot use import statement outside a module」が発生した場合の対処法
node.jsで、エラー「SyntaxError: Cannot use import statement outside a module」が発生した場合の対処法を記述してます。
環境
- OS windows 10 pro
- node 14.6.0
エラー全文
以下のコードで発生
import { createClient } from 'redis';
エラー全文
(node:11660) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
redis.js:1
import { createClient } from 'redis';
^^^^^^
SyntaxError: Cannot use import statement outside a module
at wrapSafe (internal/modules/cjs/loader.js:1152:16)
at Module._compile (internal/modules/cjs/loader.js:1200:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1257:10)
at Module.load (internal/modules/cjs/loader.js:1085:32)
at Function.Module._load (internal/modules/cjs/loader.js:950:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
at internal/main/run_main_module.js:17:47
対処法
エラーメッセージにあるように、package.jsonに「”type”: “module”」を追加。
set "type": "module" in the package.json
「package.json」
{
"name": "hoge",
"version": "1.0.0",
"description": "",
"main": "redis.js",
"type": "module",
"dependencies": {
"redis": "^4.0.2"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
自分の場合は、以上で解決しました。
※「redis」を使用すると別のエラーが発生します。これも書いてある通り、
import { createClient } from 'redis';
^^^^^^^^^^^^
SyntaxError: The requested module 'redis' is expected to be of type CommonJS, which does not support named exports. CommonJS modules can be imported by importing the default export.
For example:
import pkg from 'redis';
const { createClient } = pkg;
at ModuleJob._instantiate (internal/modules/esm/module_job.js:98:21)
at async ModuleJob.run (internal/modules/esm/module_job.js:137:5)
at async Loader.import (internal/modules/esm/loader.js:162:24)
at async Object.loadESM (internal/process/esm_loader.js:68:5)
コードを以下のように変更すれば解決しました。
import pkg from 'redis';
const { createClient } = pkg;
-
前の記事
AlmaLinux テキストエディタFocusWriterをインストールする 2022.01.14
-
次の記事
javascript lodashを使ってオブジェクトから配列を作成する 2022.01.15
コメントを書く