みかづきブログ・カスタム

基本的にはちょちょいのほいです。

Node.jsでimport・exportを使う 💻

f:id:kimizuka:20210910222258p:plain

Node.jsで普通にimportを使おうとすると、

SyntaxError: Cannot use import statement outside a module

と怒られます。

いままではおとなしくrequireを使ってきましたが、世間はもう2021年。子供の頃思い描いていた未来です。
そう。流石にimportを使いたいので、ヒントを探していたところ、

Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.

一緒にこんなメッセージが表示されていることに気づきました。

どうやら2つ解決策があるようです。

❶ package.jsonに"type": "module"を追加する

package.json

{
  "type": "module"
}

と、package.jsonに"type": "module"を追加したところ、確かにエラーは消えました。

ソースコード


github.com

package.json

{
  "type": "module",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "axios": "^0.26.0"
  }
}

index.js

import axios from 'axios';

console.log(axios);

❷ import、exportを使いたいファイルの拡張子をmjsにする

index.js → index.mjs という感じで拡張子を変更しても、確かにエラーは消えました。

ソースコード

github.com

package.json

{
  "main": "index.mjs",
  "scripts": {
    "start": "node index.mjs"
  },
  "dependencies": {
    "axios": "^0.26.0"
  }
}

index.mjs

import axios from 'axios';

console.log(axios);




electronでアプリを作ったりするとき、ずーっとrequireを使ってきたんですが、今後はimportを使おうと思いました。

が。よくよく調べてみると、残念ながら、どちらのやり方でもelectronには対応できないようです。
なので、今回の方法はNode.jsの開発で使おうと思います。無念。。