NodeJS+TypeScript+Serverless离线调试报错:需用import加载ES模块
解决方案
- 降级serverless-offline到兼容CommonJS的版本:最新版serverless-offline已切换为ESM模块,而全局安装的Serverless框架仍使用CommonJS,导致加载冲突。安装v12.x系列的稳定版本:
npm uninstall serverless-offline npm install serverless-offline@12.0.4 --save-dev - 使用项目本地的Serverless命令:避免全局Serverless版本和项目依赖的插件版本不兼容,改用npx执行本地命令:
npx sls offline -s dev - 临时调整模块类型配置:在项目根目录的package.json中添加
"type": "commonjs",覆盖serverless-offline的ESM配置,但需注意这可能影响项目其他模块的加载逻辑,需测试验证兼容性。 - 升级Node.js到LTS版本:Node 12、14对ESM的支持不完善,升级到Node 16+(如v18.x LTS),同时将Serverless框架和serverless-offline都升级到最新兼容版本,新版本对ESM的支持更成熟。
内容的提问来源于stack exchange,提问作者Hasteq
相关产品推荐
相关产品推荐

