Assim como eu, muitos (senão todos) os alunos que começaram este curso recentemente se depararam com as dificuldades de reproduzir as atividades executadas. O próprio Serverless , bem como outras bibliotecas, foram atualizadas e não trabalham mais da mesma forma. Eu tentei pesquisar mais a fundo se haveria alguma maneira de fazer um ambiente que funcionasse, usando as mesmas tecnologias, mas não tive sucesso.
Mesmo assim, deixo aqui registrado um resumo dessa "saga" de umas boas horas de tentativas.
Partindo do princípio, executando os comandos conforme o professor faz, é possível ver de cara os erros no arquivo serverless.yml que o VSCode nos mostra, dizendo que o provedor google não é reconhecido, e que a versão nodejs10 também não é aceita.
Pesquisei na documentação do Serverless, e o mesmo já deixou de ser compatível com o Google Cloud há muito tempo.
Fui mais a fundo, pensando em fazer um "downgrade" no meu ambiente. Conforme é possível ver na etapa 04 - Primeira função com Serverless, no minuto 1:27, o professor está usando a versão serverless@1.67.0
.
É possível especificar a versão que deseja instalar pelo npm usando o parâmetro -d, mas não foi possível criar a aplicação, por várias inconsistências nas dependências:
unable to resolve dependency tree
Could not resolve dependency:
peer serverless@"2 || 3" from serverless-google-cloudfunctions@4.6.0
Resolvi então alterar o ambiente todo. É possível utilizar mais de uma versão do NodeJS usando o gerenciador de versões NVM. Quem tiver interesse, o excelente artigo https://medium.com/@pk.koglin/como-instalar-mais-de-uma-vers%C3%A3o-do-node-js-2c850e20b544 explica detalhadamente. Inclusive, para usuários de Windows, há um instalador disponível em https://github.com/coreybutler/nvm-windows/releases. No meu caso, como os erros indicavam a verão 10 do Node, eu executei os três comandos abaixo, para instalar a versão que eu queria, para listar as disponíveis no meu sistema, e para definir qual será usada, a 10:
nvm install 10
nvm ls
nvm use 10
A partir daí, instalei as versões do Serverless e do plugin serverless-google-cloudfunctions que, aparentemente, seriam as compativeis:
npm install -d serverless@1.67.0
npm install -d serverless-google-cloudfunctions@4.6.0
E assim até foi possível criar a aplicação alura-forum, mas o deploy não foi executado (testei com as vesões 2 e 3 do serverless também). O mais próximo que consegui chegar foi na imagem abaixo, onde é possível ver a tela do professor no fundo e meu terminal com as versões aproximadas. Também é possível ver que o próprio erro já nos orienta a usar as bibliotecas de AWS.
Infelizmente não dá para continuar o curso, porque sem conseguir executar as atividades propostas, o aprendizado fica comprometido.
Para a Alura, fica a sugestão de criar uma solução que possibilite aos alunos reproduzir um ambiente compatível com o que o professor utilizou ao gravar as aulas. Com tantas tecnologias disponíveis de provisionamento de infraestrutura, gerenciamento de estados, versionamento, conteinerização, etc, e tantos bons cursos na plataforma sobre Ansible, Docker, Terraform, Git... seria até um excelente caso de uso para provar, na prática, a importância desses recursos. Além de possibilitar que bons cursos sejam úteis por muito mais tempo, sem aquele gosto amargo de "Na máquina do professor, tudo funciona", e não deixaria alunos frustrados enquanto os cursos da plataforma são renovados e regravados.
Enfim, não deu para achar uma alternativa dessa vez, mas fica a dica.