You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript编译成功后server.mjs为何未出现在lib输出文件夹

问题原因及解决方案

核心原因

server.mjs未生成主要来源于以下配置或文件结构问题:

  • 你的tsconfig.json中include字段仅配置了src目录,若server.ts(TS入口源文件)没有放在src目录下,tsc编译时会直接忽略该文件,自然不会生成对应的输出文件。
  • TypeScript默认仅处理.ts/.tsx后缀的源文件,你贴出的mymodule.mjs是原生ES模块文件,若没有开启allowJs配置,TS不会处理这类非TS后缀的文件,也不会将其复制到输出目录。
  • 你当前的TS配置默认输出的是.js后缀的CommonJS模块,不会自动生成.mjs后缀的文件:你的compilerOptions.module配置为commonjs,且没有配置模块后缀规则,就算编译成功输出的也是server.js而非server.mjs,启动命令直接找.mjs后缀自然会报错。
  • 需确认你是否真的存在server.ts(或对应入口源文件),你贴出的文件里只有mymodule.mjs,如果根本没有入口源文件,编译工具不可能凭空生成对应的输出文件。

解决步骤

  1. 确认入口文件位置:把server.ts入口文件移动到src目录下,如果你非要放在其他位置,就在tsconfig.json的include数组里添加对应路径,示例:
"include": ["src", "./server.ts"]
  1. 调整模块输出配置:
    如果你不需要强制使用.mjs后缀,最简单的方案是把package.json里的start命令改成node lib/server.js,匹配TS默认输出的后缀即可。
    如果你确实需要输出.mjs后缀的ES模块,做两个调整:
    • 在tsconfig.json的compilerOptions中把module改成ESNext
    • 把你的入口源文件重命名为server.mts,TS编译时会自动输出server.mjs文件
  2. 如果需要保留原生.mjs文件:在tsconfig.json的compilerOptions中添加"allowJs": true,TS就会把src目录下的.js/.mjs文件也复制到输出目录。

内容的提问来源于stack exchange,提问作者Jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 03:57:02