Intentar la importación de estilo ES6 da 'No se puede usar la declaración de importación fuera de un módulo'

8

Estoy tratando de escribir una prueba de JavaScript en intellij para la cual necesito importar algunas dependencias y quiero usar declaraciones de importación de estilo ES6 pero obtengo un error

/ usr / local / bin / node / workspace / rr-sample / node_modules / mocha / bin / _mocha --ui bdd --reporter "/ Users / me / Library / Application Support / IntelliJIdea2019.1 / NodeJS / js / mocha- intellij / lib / mochaIntellijReporter.js "tests / *. test.js /workspace/rr-sample/tests/App.test.js:3

Importar chai desde 'chai'

^^^^^^

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

¿Cuál es exactamente el problema? Encontré este enlace (y otros) http://xahlee.info/js/js_import_export.html que le dice cómo solucionar este error pero en otro contexto que no me ayuda, y no explica cuál es el problema .

En caso de que sea útil, aquí está el código que estoy 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;
  });

});
madera flotante
fuente
1
“No explica cuál es el problema”  , dice explícitamente “Si su código usa importo export, entonces debe cargarse como módulo”. a lo largo de la parte donde dice que debes usar type="module". ¿Has visto la sintaxis de los módulos Intellij Idea Ecmascript Harmony ?
user4642212

Respuestas:

5

La forma más fácil de ejecutar pruebas Mocha escritas en ES6 es compilándolas sobre la marcha utilizando la --require @babel/registeropción Mocha (consulte https://github.com/mochajs/mocha/wiki/compilers-deprecation#what-should-i-use-instead -entonces ). Por supuesto, debe asegurarse de instalar los módulos correspondientes y configurar el .babelrccorrespondiente

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"
    ]
  ]
}

ingrese la descripción de la imagen aquí

Ver también https://dev.to/bnorbertjs/my-nodejs-setup-mocha--chai-babel7-es6-43ei

lena
fuente
Importante para mí era el extra Mocha Opciones
guido
@lena, ¿dónde puedo encontrar esa ventana?
Miel Yan
es la configuración de ejecución de Mocha, puede encontrarla en Ejecutar> Editar configuraciones ...
lena