Tutoriais

Modernizar uma aplicação Node.js

Aprenda a usar o IBM Bob para modernização de aplicações atualizando uma API Express Node.js da versão 16 para a 22. Experimente o desenvolvimento assistido por IA com modos, aprovações e codificação literária neste tutorial prático.

Introdução

Bob é um parceiro de IA SDLC (Software Development Lifecycle) que aumenta seus fluxos de trabalho existentes. Neste tutorial, você aprenderá alguns dos recursos principais do Bob modernizando uma API Express TypeScript do Node.js 16 para o Node.js 22. Você não precisa de experiência em Node.js ou TypeScript para concluir o tutorial. Você aprenderá como o Bob analisa dependências e moderniza padrões de código.

Recursos principais que você aprenderá

Bob fornece quatro capacidades essenciais que você usará ao atualizar a API:

  • Modos: Personas especializadas que adaptam o comportamento do Bob para tarefas específicas.
  • Menções de contexto: Referencie elementos específicos do projeto em conversas com Bob, como arquivos, pastas ou commits Git.
  • Fluxo de aprovação: Revise cada ferramenta que Bob planeja usar antes de ser executada.
  • Codificação literária: Escreva código com Bob diretamente no seu editor. Digite instruções em linguagem natural exatamente onde o código deve ir.

Pré-requisitos

Este tutorial usa uma API REST Express TypeScript como projeto de exemplo. No entanto, você não precisa de experiência em Node.js ou TypeScript.

Para concluir este tutorial, você precisa atender aos seguintes pré-requisitos:

  • Docker instalado e em execução na sua estação de trabalho. Você usa Bob para criar um Dockerfile para o aplicativo.
  • Bob IDE instalado.
  • Você concluiu o tutorial de Início Rápido para se familiarizar com a interface e os recursos do Bob.
  • Você pode querer iniciar uma nova janela de contexto para este tutorial. Consulte o tutorial Criar uma nova janela de contexto para obter instruções.

Configure seu espaço de trabalho

Inicie o IBM Bob e clone o repositório de exemplo para começar a trabalhar com o aplicativo Node.js que você modernizará.

Inicie o IBM Bob

Inicie o aplicativo IBM Bob no seu computador.

Abra o painel de chat do Bob

Se o painel lateral do Bob ainda não estiver aberto, abra-o clicando no ícone Bob ao lado da barra de navegação ou use o atalho Option + Command + B (Mac) ou Ctrl + Alt + B (Windows).

Painel lateral do Bob aberto no IBM Bob IDE

Clone o repositório do tutorial

Clone o repositório contendo o aplicativo de exemplo clicando no ícone de arquivos localizado no canto superior esquerdo do painel Bob IDE. Em seguida, clique em Clonar Repositório e cole o seguinte repositório GitHub na barra de pesquisa. Bob perguntará onde você deseja salvar o repositório. Você pode salvá-lo onde quiser.

https://github.com/IBM/bob-demo.git

Clonando o repositório no Bob IDE

Abra o repositório

Quando Bob perguntar se você deseja abrir o repositório clonado, clique em Abrir. Se Bob perguntar "Você confia nos autores dos arquivos nesta pasta?", clique em Sim, confio nos autores.

Observe os arquivos do projeto no Explorer e o painel de chat do Bob ao lado.

Arquivos do projeto exibidos no Explorer com o painel de chat do Bob

Desabilite a aprovação automática

Certifique-se de que a aprovação automática esteja desabilitada. Você pode encontrar essa configuração em Permissões. Com a aprovação automática desabilitada, Bob pede sua permissão antes de executar quaisquer alterações propostas. Isso garante que você mantenha o controle de todas as modificações na sua base de código.

Construa o ambiente containerizado

Crie um Dockerfile para executar o aplicativo em um ambiente containerizado, eliminando a necessidade de instalar Node.js ou dependências localmente.

Mude para o modo Agent

Mude Bob para o modo Agent clicando no menu suspenso de modo e selecionando Agent.

Modos são uma maneira pela qual Bob respeita o princípio do menor privilégio. Cada modo dá ao Bob permissão para propor um conjunto específico de tarefas em seu nome. O modo Agent permite que Bob escreva, modifique e refatore código. Bob ainda pede permissão antes de cada operação.

Crie o Dockerfile

Insira um prompt na interface de chat do Bob para pedir ao Bob que crie o Dockerfile.

Crie um Dockerfile para este aplicativo Node.js TypeScript. Ele deve usar Node 16 para corresponder à versão atual do aplicativo, compilar o código TypeScript e executar o aplicativo na porta `3000`.

Bob solicita acesso de leitura a vários arquivos para entender os requisitos do Dockerfile. Clique em Aprovar para conceder ao Bob permissão para ler esses arquivos.

Bob determina a estrutura apropriada do Dockerfile e mostra o arquivo proposto. Botões de ação aparecem acima do campo de entrada do chat. Clique em Salvar para criar o arquivo. Salvar grava ou modifica arquivos em seu projeto. Mais tarde neste tutorial, Bob atualiza o Dockerfile para usar Node 22.

Verifique se o aplicativo legado compila

Antes de modernizar, verifique se o código legado compila e executa corretamente. Esta linha de base garante que você possa identificar quaisquer problemas introduzidos pela modernização.

Durante a fase de compilação, Bob dirá que a compilação falhou porque o Dockerfile usa npm ci, que requer um arquivo package-lock.json que não existe.

No painel de chat do Bob, diga ao Bob para compilar e testar o aplicativo.

Compile e teste o aplicativo legado usando Docker para verificar se funciona corretamente antes da modernização. O aplicativo deve responder a solicitações de API em /api/todos com dados de exemplo

Após o teste, limpe o contêiner.

Bob pede que você salve uma alteração no Dockerfile que corrigirá o problema package-lock.json com a seguinte mensagem:

A compilação falhou porque não há arquivo package-lock.json. Preciso atualizar o Dockerfile para usar `npm install` em vez de `npm ci`. Deixe-me corrigir isso.

A capacidade do Bob de detectar e corrigir erros de compilação é um exemplo de como ele trabalha com você para solucionar e resolver problemas durante implantações.

Depois que Bob aplica a correção e conclui a compilação, ele exibe um resumo dos resultados de compilação e teste, confirmando que o aplicativo legado funciona corretamente em um ambiente containerizado. Agora você tem uma linha de base verificada para comparar após modernizar o aplicativo na próxima seção.

Você e Bob verificaram que o aplicativo legado funciona corretamente.

Explore a base de código Node.js com o modo Ask do Bob

Antes de modernizar, clique no menu suspenso de seleção de modo e mude para o modo Ask do Bob. O modo Ask só pode ler arquivos, então você pode explorar código com segurança sem fazer alterações acidentalmente. Você também pode digitar /ask no chat do Bob para mudar para o modo Ask.

Use menções de contexto @ para revisar o projeto

Bob suporta menções de contexto @ que permitem referenciar arquivos, pastas ou problemas específicos diretamente em seus prompts. Menções de contexto dão ao Bob informações precisas sobre o que você deseja discutir.

Explore os arquivos package.json, tsconfig.json e Dockerfile dizendo explicitamente ao Bob quais arquivos analisar usando menções @. Aprender sobre esses arquivos ajuda você a entender os requisitos de modernização antes de fazer quaisquer alterações.

No painel de chat do Bob, execute o seguinte prompt:

@package.json Qual versão do Node.js este projeto está usando? Quais dependências precisariam de atualização para Node.js 22? Dê-me um resumo breve.

O símbolo @ diz ao Bob para incluir package.json como contexto. Bob não começa a responder imediatamente; ele explora sua base de código primeiro, lendo arquivos, seguindo padrões e analisando código. Não interrompa esta fase de exploração.

Bob identifica as seguintes atualizações necessárias para Node.js 22:

**Versão atual do Node.js:** 16.x

**Dependências que precisam de atualizações para Node.js 22:**

1. **@types/node**: ^16.18.0 → ^22.x.x (tipos TypeScript para Node.js 22)
2. **typescript**: ^4.9.5 → ^5.x.x (TypeScript 5+ para melhor suporte ao Node.js 22)
3. **ts-node**: ^10.9.1 → ^10.9.2+ (garantir compatibilidade com TS 5 e Node 22)

**Dependências já compatíveis:**
- **express**: ^4.18.2 ✓ (funciona com Node.js 22)
- **uuid**: ^9.0.0 ✓ (funciona com Node.js 22)
- **@types/express**: ^4.17.17 ✓ (compatível)
- **@types/uuid**: ^9.0.0 ✓ (compatível)

**Resumo:** Apenas as dependências de desenvolvimento específicas do Node.js precisam de atualização. As dependências de runtime (Express, UUID) já são compatíveis com Node.js 22.

Analise a configuração TypeScript

Peça ao Bob para analisar a configuração TypeScript do projeto:

@tsconfig.json Qual sistema de módulos e configurações de compilador este projeto TypeScript está usando? Quais dependências precisariam de atualização para Node.js 22? Dê-me um resumo breve.

Bob responde com os seguintes componentes que você precisa atualizar para Node.js 22:

**Configuração TypeScript atual:**

**Sistema de módulos:** CommonJS (`"module": "commonjs"`)
- Sistema de módulos Node.js tradicional usando `require()` e `module.exports`
- Saída: arquivos `.js` com sintaxe CommonJS

**Configurações do compilador:**
- **Target:** ES2020 (compila para JavaScript ES2020)
- **Lib:** ES2020 (usa recursos da biblioteca padrão ES2020)
- **Module Resolution:** Node (algoritmo de resolução Node.js padrão)
- **Strict Mode:** Habilitado (verificação de tipo completa)

**Atualizações recomendadas para Node.js 22:**

1. **target**: ES2020 → **ES2022** ou **ESNext** (aproveitar recursos JS mais recentes)
2. **lib**: ES2020 → **ES2022** (acessar APIs mais recentes)
3. **module**: Considere migrar para **"node16"** ou **"nodenext"** para suporte ESM nativo
4. **moduleResolution**: "node" → **"node16"** ou **"bundler"** (melhor resolução moderna)

**Resumo:** O projeto usa CommonJS legado com alvo ES2020. Para Node.js 22, você deve atualizar o alvo/lib para ES2022+ e considerar migrar para módulos ESM nativos (embora CommonJS ainda funcione bem).

Analise o Dockerfile

Peça ao Bob para analisar o Dockerfile do projeto:

@Dockerfile Qual versão do Node.js este Dockerfile usa? O que precisaria mudar para Node.js 22? Dê-me um resumo breve.

Bob responde com o que precisa ser atualizado para Node.js 22:

**Versão atual do Node.js do Dockerfile:** Node 16 Alpine (`node:16-alpine`)

**Mudanças necessárias para Node.js 22:**

1. **Imagem base (Linha 2):** `FROM node:16-alpine` → `FROM node:22-alpine`

**Resumo:** Apenas uma mudança de linha necessária: atualizar imagem base de node:16-alpine para node:22-alpine. O resto do Dockerfile é compatível com Node.js 22, embora a sintaxe de flags npm possa ser modernizada

Agora você entende o que precisa ser atualizado. Na próxima seção, você muda para o modo Agent e faz Bob fazer as alterações.

Modernize a API com o modo Agent do Bob

Bob determinou os seguintes requisitos de modernização para package.json, tsconfig.json e Dockerfile:

  • Mudar Node.js 16 para Node.js 22 em package.json e Dockerfile
  • Atualizar as configurações de alvo e módulo do compilador TypeScript
  • Corrigir versões de dependências desatualizadas

Para começar a modernizar o aplicativo, volte para o modo Agent para que Bob possa fazer alterações no código.

No painel de chat do Bob, execute o seguinte prompt de modernização. Observe as referências @ que apontam Bob para os arquivos específicos em que ele trabalha:

@package.json @tsconfig.json @Dockerfile

Modernize esta API Express do Node.js 16 para Node.js 22. Mantenha a funcionalidade da API idêntica - esta é uma atualização de plataforma, não uma mudança de recurso. Dê-me um resumo breve.

Depois que Bob termina de atualizar e testar o código, ele exibe um resumo similar ao seguinte:

Dockerfile — 2 linhas alteradas

- Ambos os estágios FROM node:16-alpine → node:22-alpine

package.json — 3 campos alterados

- engines.node: 16.x → 22.x
- @types/node: ^16.18.0 → ^22.0.0
- typescript: ^4.9.5 → ^5.0.0

tsconfig.json — 4 configurações alteradas

- target: ES2020 → ES2023
- lib: ["ES2020"] → ["ES2023"]
- module: commonjs → node16 (TypeScript 5 requer correspondência com moduleResolution)
- moduleResolution: node → node16

Você e Bob modernizaram o aplicativo.

Marque a modernização como concluída

Use o recurso de codificação literária do Bob para atualizar o título do todo de exemplo, marcando o aplicativo como modernizado. A codificação literária permite que você escreva instruções em linguagem natural diretamente no seu editor em vez de usar o painel de chat.

Habilite o modo de codificação literária

Na aba Explorer no lado esquerdo da tela, navegue até a pasta express-todo-api e clique em src/db.ts para abri-lo no editor. Depois de ter src/db.ts aberto, alterne o modo de codificação literária clicando no ícone de varinha mágica na barra de ferramentas do editor. Alternativamente, você pode pressionar Cmd + I no Mac, ou Ctrl + I no Windows e Linux.

Escreva sua instrução

No arquivo src/db.ts que está aberto no seu editor, cole a seguinte instrução no topo do arquivo, antes de qualquer código:

// Encontre a propriedade title do objeto todo de exemplo e mude para "Welcome to the Modernized Node.js 22 API"

Bob entende que este comentário é uma instrução, em vez de código regular, porque você está no modo de codificação literária. Sua instrução aparece destacada no editor.

Gere o código

Clique em Gerar na parte inferior do documento.

Bob localiza o objeto sampleTodo no construtor e mostra a alteração. Você verá a mudança do título de:

Antes:

title: "Learn Node.js modernization"

Depois:

title: "Welcome to the Modernized Node.js 22 API"

Aceite as alterações

Clique em Aceitar tudo na parte inferior do documento onde você clicou em Gerar para aplicar a alteração ao arquivo.

Saia do modo de codificação literária

Clique em Sair abaixo da varinha mágica literária no topo do arquivo para sair do modo de codificação literária.

Você atualizou a API usando codificação literária. Quando você testar a API na próxima seção, verá este novo título na resposta da API.

Verifique o aplicativo modernizado com Docker

Verifique a modernização do código e sua alteração de código literário reconstruindo e testando o contêiner Docker.

Volte para o modo Agent e descreva o que você quer que Bob verifique:

Verifique se o aplicativo Node.js 22 modernizado funciona compilando e testando com Docker. Verifique se a API responde em /api/todos e mostra o título do todo atualizado. Limpe quando terminar. Dê-me um resumo breve. Também quero ver a validação do novo título.

Depois que Bob verifica que o aplicativo foi modernizado, ele fornece o seguinte resumo:

✅ **Verificação concluída - Modernização Node.js 22 bem-sucedida**

**Resultados de compilação e teste:**
- Imagem Docker compilada com sucesso com Node.js 22
- Compilação TypeScript concluída sem erros
- Aplicativo iniciado e respondeu corretamente

**Validação da API:**
{
  "id": "72459851-7953-4a9c-94d3-4f8f1c656d21",
  "title": "Welcome to the Modernized Node.js 22 API",
  "completed": false,
  "createdAt": "2026-02-16T16:35:49.132Z"
}

**Confirmado:**
- ✅ Título do todo atualizado exibido corretamente: "Welcome to the Modernized Node.js 22 API"
- ✅ Endpoint de API /api/todos responde com sucesso
- ✅ Toda funcionalidade funcionando no Node.js 22
- ✅ Limpeza concluída (contêiner e imagem removidos)

**Resumo:** A API TODO Express modernizada está totalmente funcional no Node.js 22 com os dados de exemplo atualizados mostrando o novo título confirmando que a modernização está completa.

A API funciona corretamente, e o título foi atualizado para "Welcome to the Modernized Node.js 22 API", confirmando que Bob preservou o comportamento existente enquanto modernizava a versão do Node.js e as dependências.

Próximos passos

Neste tutorial, você aprendeu como modernizar uma API Express do Node.js 16 para Node.js 22 usando Bob. Bob analisou suas dependências, atualizou arquivos de configuração e modernizou a configuração do Docker preservando toda a funcionalidade.

  • Aprenda sobre o recurso de revisão de código do Bob /review para detectar problemas potenciais antes de fazer commit do seu trabalho.
  • Aprenda sobre modos, que são personas especializadas que adaptam o comportamento do Bob para suas tarefas específicas.
  • Aprenda como usar a interface de chat do Bob que é a principal maneira de interagir com Bob.

Em seguida, trabalhe na série de tutoriais Comece com IBM Bob para aprender mais sobre os recursos e capacidades do Bob.

Como está este tópico?