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

Problemas para rodar o chalk

Fala turma,

Estou tendo dificuldades para rodar o chalk. Meu console apresenta o seguinte erro:

[Running] node "/Users/juliobarreto/Documents/programacao/alura/nodeJs/teste.js"
/Users/juliobarreto/Documents/programacao/alura/nodeJs/teste.js:2
const chalk = require('chalk')
              ^

Error [ERR_REQUIRE_ESM]: require() of ES Module /Users/juliobarreto/Documents/programacao/alura/nodeJs/node_modules/chalk/source/index.js from /Users/juliobarreto/Documents/programacao/alura/nodeJs/teste.js not supported.
Instead change the require of index.js in /Users/juliobarreto/Documents/programacao/alura/nodeJs/teste.js to a dynamic import() which is available in all CommonJS modules.
    at Object.<anonymous> (/Users/juliobarreto/Documents/programacao/alura/nodeJs/teste.js:2:15) {
  code: 'ERR_REQUIRE_ESM'
}

Instalei o pacote pelo NPM e confirmei pelo pachage.json, que está conforme abaixo:

{
  "name": "nodejs",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "chalk": "^5.0.1"
  }
}

Alguém pode me ajudar?

3 respostas
solução!

Para usar o chalk na nova versão, temos que usar o "import", e para usarmos o "import" temos que dizer ao node que aquele arquivo é do tipo module. Para resolver o "problema" do chalk basta seguir os seguintes passos:

Terminal npm install chalk para instalar

package.json "type": "module" para configurar o module

index.js import chalk from 'chalk'; -- para importar o chalk

console.log(chalk.blue("Hello word"));

Se você estiver usando a importação usando require a nova versão pode aparecer esse erro mesmo, já passei por isso algumas vezes, para resolver isso usando require você pode instalar a versão 4 do chalk usando esse comando: npm install chalk@4.0.0

Então, a mensagem de erro diz que o chalk não suporta mais a sintaxe de importação do CommonJS. Dá para resolver isso do seguinte modo:

  • No package.json, você adiciona "type":"module" no final do arquivo, que diz para ele interpretar todas as importações como ESM:
// package.json
{
  "type": "module"
}
  • No index.js, apague o require() e adicione de acordo com a sintaxe do ESM:
import chalk from 'chalk'

console.log(chalk.blue("Vamos começar!\n"));

const paragrafo = 'Texto retornado por uma função';

function texto(string){
    return string;
}

console.log(texto(paragrafo));

Com isso, tudo deve funcionar.