❌ESM→CJSはok、ESM←CJSはng
Node.js v22で、require(ESM)が入ったのでESM←CJSもいけるようになった
↓以下は古い、それ以前のときのメモ
https://zenn.dev/yodaka/articles/596f441acf1cf3#互換性について
https://quramy.medium.com/typescript-4-7-と-native-node-js-esm-189753a19ba8
table:対応
import(require) するファイル import(require) されるファイル Static Import Dynamic Import require
ESM ESM OK OK NG
CJS CJS NG NG OK
ESM CJS OK NG NG
CJS ESM NG OK NG
ただし、dynamic importを使えば、ESM←CJSできる
code:cjs(js)
(async () => {
const hoge = await import("./hoge"); // .mjs
console.log(hoge);
})();