基于AWS Lambda的Serverless NestJS离线运行报this.instance.use错误如何解决
报错原因
该报错是因为传入ExpressAdapter的Express应用实例无效,实例缺少内置的use方法,绝大多数是ES模块和CommonJS模块的导入语法不兼容导致的。
修复方案
1. 修正express实例化逻辑(二选一即可)
方案A:调整导入语法并兼容ES模块
首先在tsconfig.json的compilerOptions中添加以下配置:
{ "compilerOptions": { "esModuleInterop": true, "allowSyntheticDefaultImports": true } }
再修改lambda.ts中的express导入语句:
// 替换原有 import * as express from 'express' import express from 'express';
方案B:直接调用default属性实例化
如果不想修改tsconfig配置,可以直接修改lambda.ts中的express实例化代码:
// 替换原有 const expressApp = express(); const expressApp = express.default();
2. 排除打包插件干扰
如果修改后问题仍存在,先临时移除serverless.yml中的serverless-plugin-optimize插件配置,该插件的压缩逻辑偶尔会误删Express的核心方法,移除后重新运行测试即可。
3. 依赖版本对齐
如果上述操作都无效,确认@nestjs/core、@nestjs/platform-express、express三个依赖没有跨大版本混用的情况,可重新安装依赖修复版本异常:
rm -rf node_modules package-lock.json npm install @nestjs/core @nestjs/platform-express express
内容的提问来源于stack exchange,提问作者yangseungbin
相关产品推荐
相关产品推荐

