I want to test my simple Node.js (v14.15.4) application with Mocha (v8.2.1). I also include Babel to compile the ES6 modules in my code.
In particular, I use "@babel/core" (v7.12.10)
, "babel/register" (v7.12.10)
to use the compiler with mocha, and "@babel/preset-env" (v7.12.11)
for ES6 module support.
Everything works fine, until I include an external dependency in my code. In my case, I want to use bpmn-js (v8.2.0)
which itself is ready for the use with ES6 modules (https://bpmn.io/blog/posts/2018-migrating-to-es-modules.html).
My project structure is as follows:
- bpmn
- index.js
- node_modules
- ...
- babel.config.json
- index.js
- index.test.js
- package.json
The files are depicted below:
package.json
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "mocha --require @babel/register index.test.js"
},
"devDependencies": {
"mocha": "8.2.1",
"@babel/core": "7.12.10",
"@babel/register": "7.12.10",
"@babel/preset-env": "7.12.11"
},
"dependencies": {
"bpmn-js": "8.2.0"
},
"author": "",
"license": "ISC"
}
babel.config.json
{
"presets": ["@babel/preset-env"]
}
index.js
export {
default
} from './bpmn';
bpmn/index.js
//import { Viewer } from 'bpmn-js';
export default (str) => {
return str.toUpperCase();
};
index.test.js
import toUpperCase from './index';
const assert = require('assert');
describe('The module toUpperCase', () => {
it('should transform my test string', () => {
assert.strictEqual(toUpperCase('test'), 'TEST');
});
});
As stated, everything works fine when running npm run test
.
However, if I include the comment in line 1 in the bpmn/index.js file,
the error below occurs. It seems that babel compiles my local project files, but ignores the external dependencies, i.e. bpmn-js
in that case
\node_modules\bpmn-js\index.js:1
export {
^^^^^^
SyntaxError: Unexpected token 'export'
at wrapSafe (internal/modules/cjs/loader.js:979:16)
at Module._compile (internal/modules/cjs/loader.js:1027:27)
at Module._compile (D:\Code\Neuer Ordner\node_modules\pirates\lib\index.js:99:24)
at Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Object.newLoader [as .js] (D:\Code\Neuer Ordner\node_modules\pirates\lib\index.js:104:7)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.<anonymous> (D:\Code\Neuer Ordner\bpmn\/index.js:1:1)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Module._compile (D:\Code\Neuer Ordner\node_modules\pirates\lib\index.js:99:24)
at Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Object.newLoader [as .js] (D:\Code\Neuer Ordner\node_modules\pirates\lib\index.js:104:7)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.<anonymous> (D:\Code\Neuer Ordner\/index.js:1:1)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Module._compile (D:\Code\Neuer Ordner\node_modules\pirates\lib\index.js:99:24)
at Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Object.newLoader [as .js] (D:\Code\Neuer Ordner\node_modules\pirates\lib\index.js:104:7)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.<anonymous> (D:\Code\Neuer Ordner\/index.test.js:1:1)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Module._compile (D:\Code\Neuer Ordner\node_modules\pirates\lib\index.js:99:24)
at Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Object.newLoader [as .js] (D:\Code\Neuer Ordner\node_modules\pirates\lib\index.js:104:7)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.exports.requireOrImport (D:\Code\Neuer Ordner\node_modules\mocha\lib\esm-utils.js:20:12)
at Object.exports.loadFilesAsync (D:\Code\Neuer Ordner\node_modules\mocha\lib\esm-utils.js:33:34)
at Mocha.loadFilesAsync (D:\Code\Neuer Ordner\node_modules\mocha\lib\mocha.js:431:19)
at singleRun (D:\Code\Neuer Ordner\node_modules\mocha\lib\cli\run-helpers.js:125:15)
at exports.runMocha (D:\Code\Neuer Ordner\node_modules\mocha\lib\cli\run-helpers.js:190:10)
at Object.exports.handler (D:\Code\Neuer Ordner\node_modules\mocha\lib\cli\run.js:362:11)
at D:\Code\Neuer Ordner\node_modules\yargs\lib\command.js:241:49