Nest:REPL 控制台调试大法

什么是 REPL?

在开发 Nest.js 应用时,通常需要在浏览器中访问特定 URL 并通过 GET 或 POST 方式传参来测试模块、服务和控制器,这种方法虽然有效,但有时候可能会显得繁琐。

Nest.js 提供了 REPL 模式,类似于 Node.js 的 REPL,允许开发者在控制台中直接测试代码。

创建 Nest 项目:

bash 复制代码
nest new repl-test -p npm

创建 test 模块:

运行项目:

typescript 复制代码
npm run start:dev

运行 repl 模式

在 src 下创建 repl.ts,内容如下:

重新通过这种方式运行项目:

bash 复制代码
npm run start:dev -- --entryFile repl

其中 --entryFile 用于指定入口文件为 repl.ts

REPL 模式下的操作

使用 debug() 查看所有模块以及模块下的控制器和提供者:

methods() 查看某个控制器或提供者的方法:

使用 get()$() 获取提供者或控制器的实例并调用其方法:

注意事项:REPL 模式下,直接调用的方法不会触发管道(pipe)、拦截器(interceptor)等,仅用于传参测试函数。

配置命令历史

为了保留命令历史,可以按住上下键进行历史导航,可以在 repl.ts 中添加历史设置代码:

typescript 复制代码
import { repl } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const replServer = await repl(AppModule);
  replServer.setupHistory('.nestjs_repl_history', (err) => {
    if (err) {
      console.error(err);
    }
  });
}
bootstrap();

最后我们可以把命令配置到 npm script:

bash 复制代码
"repl:dev": "npm run start:dev -- --entryFile repl",
相关推荐
熊猫钓鱼>_>3 分钟前
Puppeteer深度解析:Chrome自动化的艺术与实践
前端·人工智能·chrome·自动化·云计算·puppeteer·mcp
Mintopia9 分钟前
团队 AI 协作开发:一套把产品快速落地的工程化方案
前端·人工智能
Mintopia11 分钟前
AI × 架构:用“智能闭环”把系统产出做到超预期
前端
wuhen_n12 分钟前
shallowRef 与 shallowReactive:浅层响应式的妙用
前端·javascript·vue.js
wuhen_n19 分钟前
事件监听器销毁完全指南:如何避免内存泄漏?
前端·javascript·vue.js
电商API&Tina20 分钟前
1688跨境寻源通API数据采集: 获得1688商品详情关键字搜索商品按图搜索1688商品
大数据·前端·数据库·人工智能·爬虫·json·图搜索算法
૮・ﻌ・28 分钟前
Nodejs - 01:Buffer、fs模块、HTTP模块
前端·http·node.js
大漠_w3cpluscom37 分钟前
为什么 :is(::before, ::after) 不能工作?
前端
aXin_li39 分钟前
从原子化到工程化:Tailwind CSS 的深层价值与实践思考
前端·css
IT_陈寒40 分钟前
用Python爬虫抓了100万条数据后,我总结了这5个反封禁技巧
前端·人工智能·后端