diff --git a/packages/fes-preset-built-in/src/plugins/generateFiles/core/plugin/index.js b/packages/fes-preset-built-in/src/plugins/generateFiles/core/plugin/index.js
index 19ae586e..9439d434 100644
--- a/packages/fes-preset-built-in/src/plugins/generateFiles/core/plugin/index.js
+++ b/packages/fes-preset-built-in/src/plugins/generateFiles/core/plugin/index.js
@@ -3,6 +3,16 @@ import { join } from 'path';
 import { winPath } from '@fesjs/utils';
 import { runtimePath } from '../../../../utils/constants';
 
+function getAppPath(absSrcPath) {
+    for (const suffix of ['.js', '.ts', '.jsm']) {
+        const p = winPath(join(absSrcPath, `app${suffix}`));
+        if (existsSync(p)) {
+            return p;
+        }
+    }
+    return null;
+}
+
 export default function (api) {
     const {
         paths,
@@ -33,12 +43,11 @@ export default function (api) {
                 'onRouterCreated'
             ]
         });
-        const appPath = winPath(join(paths.absSrcPath, 'app.js'));
         const plugins = await api.applyPlugins({
             key: 'addRuntimePlugin',
             type: api.ApplyPluginsType.add,
             initialValue: [
-                existsSync(appPath) && appPath
+                getAppPath(paths.absSrcPath)
             ].filter(Boolean)
         });
         api.writeTmpFile({
diff --git a/packages/fes-preset-built-in/src/utils/generateFiles.js b/packages/fes-preset-built-in/src/utils/generateFiles.js
index ddc0534f..c450a3ae 100644
--- a/packages/fes-preset-built-in/src/utils/generateFiles.js
+++ b/packages/fes-preset-built-in/src/utils/generateFiles.js
@@ -44,9 +44,8 @@ export default async ({ api, watch }) => {
             type: api.ApplyPluginsType.add,
             initialValue: [
                 paths.absPagesPath,
-                // 貌似没用到
-                // join(paths.absSrcPath, api.config?.singular ? 'layout' : 'layouts'),
-                join(paths.absSrcPath, 'app.js')
+                join(paths.absSrcPath, 'app.js'),
+                join(paths.absSrcPath, 'app.ts')
             ]
         });
         lodash