'Babel module-resolver not working with Mocha tests
I'm trying to run some React tests using Mocha. My react components have aliases via Babel's "babel-plugin-module-resolver": "^3.1.1",, they work, but they don't work when running tests.
Here is the error when running testes:
Error: Cannot find module 'Styles/dimensions'
Here are my .babelrc configs:
...
"plugins": [
[ "module-resolver",
{
"root": ["."],
"extensions": [".js", ".json", ".jsx", ".ts", ".tsx"],
"alias": {
"Styles": ["./app/react/styles"],
}
}
]
]
...
My mocha-setup.js file includes:
require('moment');
require('babel-plugin-module-resolver');
require('babel-polyfill');
require('babel-register')({
only: /(node_modules\/|\.test.js)/,
});
require('ts-node').register({
project: './app/tests/config/tsconfig.test.json',
});
require('./helpers');
require('./browser');
Here is my command used to run the tests:
cross-env NODE_PATH=./ NODE_ENV=test mocha 'app/react/**/*.test.{js,jsx}' --require ./app/tests/config/mocha-setup.js
Any ideas on how to get Mocha to compile those aliases? The test run file without the alias, but Mocha doesn't seem to be running the alias compilation before running the tests.
Solution 1:[1]
I've solved this problem by this code in .babelrc.js:
const module_resolver = [
"module-resolver",
{
extensions: [".js", ".jsx", ".es", ".es6", ".mjs"],
root: ["./"],
alias: {
"@store": "./src/store"
},
},
];
const presets = ()=>{
return [
"@babel/preset-env",
"@babel/preset-react"
]
}
const plugins = ()=>{
let base = [
["@babel/plugin-proposal-class-properties"],
["@babel/transform-runtime"]
];
if (process.env.NODE_ENV='test')
{
base.push(module_resolver);
}
return base;
}
let config = {
presets: presets(),
plugins: plugins()
};
module.exports = config;
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | user2834676 |
