简体   繁体   English

Babel 模块解析器不适用于 Mocha 测试

[英]Babel module-resolver not working with Mocha tests

I'm trying to run some React tests using Mocha.我正在尝试使用 Mocha 运行一些 React 测试。 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.我的反应组件通过 Babel 的"babel-plugin-module-resolver": "^3.1.1",具有别名,它们可以工作,但在运行测试时不起作用。

Here is the error when running testes:这是运行睾丸时的错误:

Error: Cannot find module 'Styles/dimensions'

Here are my.babelrc configs:这是 my.babelrc 配置:

... "plugins": [ [ "module-resolver", { "root": ["."], "extensions": [".js", ".json", ".jsx", ".ts", ".tsx"], "alias": { "Styles": ["./app/react/styles"], } } ] ]...

My mocha-setup.js file includes:我的 mocha-setup.js 文件包括:

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.没有别名的测试运行文件,但摩卡在运行测试之前似乎没有运行别名编译。

I've solved this problem by this code in.babelrc.js:我已经通过 .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;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM