Просмотр исходного кода

fix: preserve ts-node's .ts extension hook during Next.js setup

Yuki Takei 1 месяц назад
Родитель
Сommit
6782883ad4
1 измененных файлов с 8 добавлено и 0 удалено
  1. 8 0
      apps/app/src/server/crowi/index.ts

+ 8 - 0
apps/app/src/server/crowi/index.ts

@@ -554,8 +554,16 @@ class Crowi {
     await this.buildServer();
 
     // setup Next.js
+    // Save ts-node's .ts extension hook before Next.js prepare() destroys it.
+    // Next.js 15's next.config.ts transpiler registers/deregisters its own require hooks,
+    // and deregisterHook() deletes require.extensions['.ts'] instead of restoring the previous hook.
+    const savedTsHook = require.extensions['.ts'];
     this.nextApp = next({ dev });
     await this.nextApp.prepare();
+    // Restore ts-node's .ts hook if Next.js removed it
+    if (savedTsHook && !require.extensions['.ts']) {
+      require.extensions['.ts'] = savedTsHook;
+    }
 
     // setup CrowiDev
     if (dev) {