使用Bun+TypeScript搭建Express服务器时遇Unexpected identifier错误
问题解决步骤
你的错误根源是ES模块与CommonJS模块语法混合使用,结合你的package.json设置了type="module",需要统一使用ES模块语法,同时调整TS配置细节:
1. 修正路由文件的导出语法
将register.controller.ts中的module.exports = router;替换为ES模块导出:
import express from "express"; const router = express.Router(); router.get('/registerUser',(_req:express.Request,res:express.Response): void => { res.send('Hello World'); }); export default router;
2. 修正主文件的导入语法
index.ts中不能使用require(type="module"会禁用CommonJS的require语法),改用ES模块导入:
import registerRouter from './controllers/auth_controllers/register.controller.ts'; SERVER.use('/pmo/api/v1/auth', registerRouter);
3. 确保依赖类型完整
作为TypeScript项目,需要安装express的类型定义包:
bun add -D @types/express
4. 验证tsconfig配置(可选优化)
你的现有配置基本符合Bun+ES模块的要求,可额外确认:
moduleResolution设为bundler是Bun推荐配置,无需修改allowImportingTsExtensions: true允许直接导入.ts文件,符合你的用法allowSyntheticDefaultImports: true与ES模块语法兼容,无需调整
完成以上修改后,重新启动Bun服务器即可解决该错误。
内容的提问来源于stack exchange,提问作者Ryurcia
相关产品推荐
相关产品推荐

