Beim Versuch des Imports im ES6-Stil wird die Importanweisung außerhalb eines Moduls nicht verwendet.

8

Ich versuche, einen Javascript-Test in Intellij zu schreiben, für den ich einige Abhängigkeiten importieren muss, und ich möchte Importanweisungen im ES6-Stil verwenden, erhalte jedoch Fehler

/ usr / local / bin / knoten / arbeitsbereich / rr-sample / knotenmodule / mokka / bin / _mocha --ui bdd --reporter "/ Users / me / Bibliothek / Anwendungsunterstützung / IntelliJIdea2019.1 / NodeJS / js / mocha- Intellij / lib / mochaIntellijReporter.js "tests / *. test.js /workspace/rr-sample/tests/App.test.js:3

Chai aus 'Chai' importieren

^^^^^^

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

Was genau ist das Problem? Ich habe diesen Link (und andere) http://xahlee.info/js/js_import_export.html gefunden, der Ihnen sagt, wie Sie diesen Fehler beheben können, aber in einem anderen Kontext, der mir nicht hilft, und der nicht erklärt, wo das Problem liegt .

Falls es hier hilfreich ist, ist der Code, den ich verwende.

//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;
  });

});
Treibholz
quelle
1
"Es erklärt nicht, wo das Problem liegt"  - es heißt explizit "Wenn Ihr Code importoder verwendet export, muss er als Modul geladen werden." entlang des Teils, wo es heißt, dass Sie verwenden müssen type="module". Haben Sie die Syntax der Intellij Idea Ecmascript Harmony-Module gesehen ?
user4642212

Antworten:

5

Der einfachste Weg, in ES6 geschriebene Mokka-Tests auszuführen, besteht darin, sie im laufenden Betrieb mit der Mokka- --require @babel/registerOption zu kompilieren (siehe https://github.com/mochajs/mocha/wiki/compilers-deprecation#what-should-i-use-instead) -dann ). Natürlich müssen Sie sicherstellen , dass die entsprechende Module installieren machen und die Einrichtung .babelrcentsprechend

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

Geben Sie hier die Bildbeschreibung ein

Siehe auch https://dev.to/bnorbertjs/my-nodejs-setup-mocha--chai-babel7-es6-43ei

Lena
quelle
Wichtig für mich war die Extra Mocha Options
Guido
@lena wo finde ich das fenster ???
Miel Yan
Es ist eine Mokka-Laufkonfiguration. Sie finden sie unter Ausführen> Konfigurationen bearbeiten ...
lena