Closed14

commonJS moduleが読み込めないエラーと戦う

kagunyan (minami)kagunyan (minami)

Vite+Remixで立ち上げているプロジェクトで以下のエラーが発生した。
dayjsで怒られている

[vite] Named export 'Dayjs' not found. The requested module 'dayjs' is a CommonJS module, which may not support all module.exports as named exports.
CommonJS modules can always be imported via the default export, for example using:

import pkg from 'dayjs';
const {Dayjs} = pkg;
kagunyan (minami)kagunyan (minami)

言われているようにしても解決しない

import pkg from 'dayjs';
const {Dayjs} = pkg;
kagunyan (minami)kagunyan (minami)

一旦extendの処理を全てコメントアウトするとエラーは消えるが、表示の挙動がおかしい。

kagunyan (minami)kagunyan (minami)

ホットリロードだとうまく表示される
①をコメントアウト、②をおく
②を表示したまま、①をコメントアウト解除
→正常に①が表示される

export default function Test() {
  return <DayjsTest />; // ①本来表示したいdayjsを使ったコンポーネント
  return <p>適当</p>; // ②適当に用意したテキスト
}
kagunyan (minami)kagunyan (minami)

cjsじゃなくてesmで読み込めるようにしたらうまくいった...

import dayjs, { Dayjs } from 'dayjs/esm';

なんかこれでうまくいくならそれでいいけど...ちょと納得いってない

kagunyan (minami)kagunyan (minami)

utils/dayjsで設定してたpluginとかも全部esm配下にあったので引っ張ってくるようにした

import dayjs, { Dayjs } from 'dayjs/esm';
import ja from 'dayjs/esm/locale/ja';
import customParseFormat from 'dayjs/esm/plugin/customParseFormat';
import isSameOrBefore from 'dayjs/esm/plugin/isSameOrBefore';
import timezone from 'dayjs/esm/plugin/timezone';
import utc from 'dayjs/esm/plugin/utc';

dayjs.extend(utc);
dayjs.extend(timezone);
dayjs.extend(customParseFormat);
dayjs.extend(isSameOrBefore);

dayjs.locale(ja);

export { Dayjs, dayjs };

このスクラップは14日前にクローズされました