Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro no NPM Start

Bom, estava com o erro no npm install e apliquei o npm install --unsafe-perm -g sqlite3 como cita no curso e apareceu a seguinte mensagem:

npm WARN deprecated node-pre-gyp@0.11.0: Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 npm WARN deprecated tar@2.2.2: This version of tar is no longer supported, and will not receive security updates. Please upgrade asap. npm WARN deprecated har-validator@5.1.5: this library is no longer supported npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.

sqlite3@5.0.2 install C:\Users\Alan\AppData\Roaming\npm\node_modules\sqlite3 node-pre-gyp install --fallback-to-build

node-pre-gyp WARN Using request for node-pre-gyp https download [sqlite3] Success: "C:\Users\Alan\AppData\Roaming\npm\node_modules\sqlite3\lib\binding\napi-v3-win32-x64\node_sqlite3.node" is installed via remote

  • sqlite3@5.0.2 updated 1 package in 6.546s

Depois, quando coloco o npm start na parta da API, aparece o seguinte erro:

alurapic@1.0.0 start D:\Sublime Text 3\Projetos\7- Angular\api node server.js

internal/modules/cjs/loader.js:892 throw err; ^

Error: Cannot find module 'sqlite3' Require stack:

  • D:\Sublime Text 3\Projetos\7- Angular\api\config\database.js
  • D:\Sublime Text 3\Projetos\7- Angular\api\config\express.js
  • D:\Sublime Text 3\Projetos\7- Angular\api\server.js at Function.Module.resolveFilename (internal/modules/cjs/loader.js:889:15) at Function.Module.load (internal/modules/cjs/loader.js:745:27) at Module.require (internal/modules/cjs/loader.js:961:19) at require (internal/modules/cjs/helpers.js:92:18) at Object. (D:\Sublime Text 3\Projetos\7- Angular\api\config\database.js:1:17) at Module.compile (internal/modules/cjs/loader.js:1072:14) at Object.Module.extensions..js (internal/modules/cjs/loader.js:1101:10) at Module.load (internal/modules/cjs/loader.js:937:32) at Function.Module.load (internal/modules/cjs/loader.js:778:12) at Module.require (internal/modules/cjs/loader.js:961:19) { code: 'MODULENOT_FOUND', requireStack: [ 'D:\Sublime Text 3\Projetos\7- Angular\api\config\database.js', 'D:\Sublime Text 3\Projetos\7- Angular\api\config\express.js', 'D:\Sublime Text 3\Projetos\7- Angular\api\server.js' ] } npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! alurapic@1.0.0 start: node server.js npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the alurapic@1.0.0 start script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\Alan\AppData\Roaming\npm-cache_logs\2021-09-09T12_12_12_796Z-debug.log

Alguém consegue me ajudar?

2 respostas
solução!

Olá, Alan! Tudo certo?

Bom, o erro no npm install pode não ser o erro que a solução era rodar npm install --unsafe-perm -g sqlite3. Na verdade, perceba que esse comando que foi recomendado faz uma instalação global (usa a flag -g), ou seja, não instala nada no projeto em si.

Se houve um erro no npm install, é provável que o pacote nunca tenha sido baixado no projeto, e ao rodar o comando citado, o projeto continuou sem o pacote, mesmo que a máquina o possua globalmente.

Esse curso é mais antigo, e utiliza a versão 8 do Node, então verifique sua versão do Node:

node -v

Se ela não for uma versão 8.x, então o sqlite3 da API está em uma versão não suportada pela sua versão do Node. Para isso, temos algumas soluções:

Alterar a versão do Node


Você pode instalar a versão recomendada pelo instrutor, por aqui. Note que você precisa desinstalar a versão atual da sua máquina.

Você também pode optar por usar o nvm, que permite que você trabalhe com várias versões do Node em paralelo. Se quiser, pode ler sobre aqui.

Como você usa Windows, a instalação é um pouco diferente, você precisa baixar este pacote que é uma portabilidade do nvm para Windows. O funcionamento é idêntico, e você só precisa seguir a instalação padrão de programas no Windows.

Depois, você pode instalar a versão 8 do Node para trabalhar neste projeto, e instalar a versão da sua preferência para usar no dia a dia. É uma solução mais trabalhosa, mas também é a única vez que você vai precisar fazer isso, independente de outros cursos e projetos que fizer.

Alterar a versão do sqlite3 no projeto


Essa é uma solução mais próxima de uma "gambiarra" e pode não funcionar 100%. Mas se você estiver em um computador de empresa, ou algo assim, talvez seja uma solução inicial melhor.

Abra o package.json da API no seu editor de texto e apague a linha da dependência sqlite3. Apague também a pasta node_modules da API, além do package-lock.json dela. Rode npm install sqlite3 e depois npm install. Assim, o npm irá recuperar a versão da biblioteca referente a sua versão do Node.

Qualquer coisa é só avisar! Espero que ajude, bons estudos!

Oi Leonardo, valeu pela resposta!

Eu consegui resolver efetuando o códigos abaixo:

npm i sqlite3@5.0.0 npm i npm start

porém, vou baixar a versão 8 do node como você sujeriu, e usar o NVM para usar as 2 versões do node também, caso o problema persista lá na frente.

Obrigado Leonardo!