Ich erhalte die Fehlermeldung „SyntaxError: Unexpected token import“, wenn ich „Trüffeltest“ durchführe. Ich versuche, eine in einer anderen Datei deklarierte Funktion in die Java-Script-Testdatei zu importieren. Ich suche schon seit einiger Zeit nach diesem Problem und konnte keine Lösung finden. Ist dies ein Problem bei Mokkatests an Trüffeln?
Es musste lediglich eine package.json-Datei mit einigen babel-Abhängigkeiten zum Projektverzeichnis hinzugefügt und eine „npm-Installation“ durchgeführt werden. Fügen Sie außerdem eine '.babelrc'-Datei zum Truffle-Projektverzeichnis hinzu. Abschließend müssen Sie der Datei truffle.js einige erforderliche Elemente hinzufügen.
package.json-Datei
{
"name": "game-token",
"devDependencies": {
"babel-preset-es2015": "^6.18.0",
"babel-preset-stage-2": "^6.24.1",
"babel-preset-stage-3": "^6.17.0",
"babel-polyfill": "^6.26.0",
"babel-register": "^6.23.0"
}
}
.babelrc-Datei
{
"presets": ["es2015", "stage-2", "stage-3"]
}
erfordert in truffle.js
require('babel-register');
require('babel-polyfill');
Ich habe die Lösung von i_robot ausprobiert und es hat fast * funktioniert, ich musste hinzufügen:
require('babel-register')({
ignore: /node_modules\/(?!zeppelin-solidity)/
});
require('babel-polyfill');
oben in meiner truffle.js. Das Ignorieren-Feld ist wichtig!! Zusätzlich zum Hinzufügen von babel-polyfill in meine Paket.json-Abhängigkeiten:
"dependencies": {
"babel-polyfill": "^6.26.0",
"babel-preset-es2015": "^6.18.0",
"babel-preset-stage-2": "^6.24.1",
"babel-preset-stage-3": "^6.17.0",
"babel-register": "^6.23.0",
"bignumber.js": "^5.0.0",
"bluebird": "^3.5.1",
"lodash": "^4.17.4",
"zeppelin-solidity": "1.6.0"
}
.babelrc-Datei
{
"presets": ["es2015", "stage-2", "stage-3"]
}
Wenn Sie kein es6-Javascript verwenden, können Sie das import
Schlüsselwort nicht verwenden. Wenn Sie es6 verwenden, haben Sie möglicherweise Mocha nicht richtig eingerichtet, um es zu verstehen oder auf es5 zu transpilieren, bevor Sie Ihre Tests ausführen.
Ich fand es einfacher, die require
Methode anzuwenden.
src/utils.js:
exports.a = 3;
test/foo/testfile.js:
// Note the relative path from the current test file.
const utils = require('../../src/utils.js');
console.log(utils.a); // 3
Kevin