Tentar a importação no estilo ES6 fornece 'Não é possível usar a declaração de importação fora de um módulo'

8

Estou tentando escrever um teste de javascript no intellij para o qual preciso importar algumas dependências e quero usar instruções de importação no estilo ES6, mas obtendo erro

/ usr / local / bin / node / workspace / rr-sample / node_modules / mocha / bin / _mocha --ui bdd --reporter "/ Usuários / me / Biblioteca / Suporte a aplicativos / IntelliJIdea2019.1 / NodeJS / js / mocha- intellij / lib / mochaIntellijReporter.js "tests / *. test.js /workspace/rr-sample/tests/App.test.js:3

importar chai de 'chai'

^^^^^^

singleRun (/workspace/rr-sample/node_modules/mocha/lib/cli/run-helpers.js:108:16) em export.runMocha (/ workspace / rr-sample / node_modules / mocha / lib / cli / run-helpers .js: 142: 13) em Object.exports.handler (/workspace/rr-sample/node_modules/mocha/lib/cli/run.js:292:3) em Object.runCommand (/ workspace / rr-sample / node_modules /yargs/lib/command.js:242:26) em Object.parseArgs [como _parseArgs] (/workspace/rr-sample/node_modules/yargs/yargs.js:1087:28) em Object.parse (/ workspace / rr -sample / node_modules / yargs / yargs.js: 566: 25) em Object.exports.main (/workspace/rr-sample/node_modules/mocha/lib/cli/cli.js:68:6) em Object. (/ workspace / rr-sample / node_modules / mocha / bin / _mocha: 10: 23) no Module._compile (internal / modules / cjs / loader.js: 1121: 30) em Object.Module._extensions..js (internal /modules/cjs/loader.js:1160:

Qual é exatamente o problema? Encontrei este link (e outros) http://xahlee.info/js/js_import_export.html, que mostra como corrigir esse erro, mas em outro contexto que não me ajuda, e não explica qual é o problema .

Caso seja útil, aqui está o código que estou usando.

//const chai = require("chai");
import chai from 'chai'

const React = require("react");
const expect = chai.expect;

describe('how it works first-time test', () => {
  it('checks equality', () => {

    const val = false;
    expect(val).to.be.false;
  });

});
madeira flutuante
fonte
1
"Ele não explica qual é o problema"  - diz explicitamente "Se o seu código usa importor export, então ele deve ser carregado como módulo". ao longo da parte em que diz que você deve usar type="module". Você viu a sintaxe dos módulos Intellij Idea Ecmascript Harmony ?
user4642212

Respostas:

5

A maneira mais fácil de executar testes Mocha escritos no ES6 é compilá-los on-the-fly usando a --require @babel/registeropção Mocha (consulte https://github.com/mochajs/mocha/wiki/compilers-deprecation#what-should-i-use-instead então ). Obviamente, você deve certificar-se de instalar os módulos correspondentes e configurar .babelrcadequadamente

package.json:

"dependencies": {
  "@babel/cli": "^7.7.4",
  "@babel/core": "^7.7.4",
  "@babel/preset-env": "^7.7.4",
  "@babel/register": "^7.7.4",
...
}

.babelrc:

{
  "presets": [
    [
      "@babel/preset-env"
    ]
  ]
}

insira a descrição da imagem aqui

Veja também https://dev.to/bnorbertjs/my-nodejs-setup-mocha--chai-babel7-es6-43ei

Lena
fonte
Importante para mim foi o Extra Mocha Options
guido
@lena onde posso encontrar essa janela ???
Miel Yan
é a configuração de execução do Mocha, você pode encontrá-la em Executar> Editar configurações ...
lena