Mocha + Webpack + Typescript (React): Ошибка не может найти модуль (компонент машинописи) - PullRequest
0 голосов
/ 07 января 2019

Я перевожу реагирующее приложение, чтобы использовать машинопись. Я добавил компонент машинописного текста и импортировал его в другой реагирующий компонент. Приложение компилируется и работает без сбоев. Однако когда я запускаю тесты yarn test, Mocha не может найти мой компонент машинописи:

Error: Cannot find module './manage_new/TypescriptFile'
at Function.Module._resolveFilename (module.js:547:15)
at Function.Module._load (module.js:474:25)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/home/dan/Documents/my-ui/src/ui/main/Modal.jsx:7:1)
at Module._compile (module.js:652:30)
at loader (/home/dan/Documents/my-ui/node_modules/babel-register/lib/node.js:144:5)
at Object.require.extensions.(anonymous function) [as .jsx] (/home/dan/Documents/my-ui/node_modules/babel-register/lib/node.js:154:7)
at Module.load (module.js:565:32)...

Ошибка возникает, когда я импортирую компонент машинописи import { TypescriptFile } from './manage_new/TypescriptFile'. Временное решение для импорта - это импорт с использованием расширения: './manage_new/TypescriptFile.tsx, которое РАБОТАЕТ. Однако это не идеальный способ. Я хотел, чтобы он работал, используя обычный импорт.

Файл webpack.config.babel.js содержит несколько записей, таких как:

resolve: {
extensions: ['.js', '.jsx', '.ts', '.tsx', '.json'],
alias: getAlias(),
},
module: {
rules: [
  {
    test: /\.(js|jsx)$/,
    use: {
      loader: 'babel-loader',
      // options: ### to fully enable hot load / HMR, we use settings from package.json: babel.presets ###
    },
    exclude: /node_modules/
  },
 {
    test: /\.(ts|tsx)$/,
    use: {
      loader: 'ts-loader',
    },
    exclude: /node_modules/
  }
]}

В файле tsconfig.json есть записи:

{
"compilerOptions": {
"outDir": "./dist/",
"baseUrl": "src/",
"noImplicitAny": true,
"module": "es6",
"target": "es6",
"jsx": "react",
"allowJs": true,
"allowSyntheticDefaultImports": true,
"moduleResolution": "node",
"strictNullChecks": true
  },
"include": [
"./src/**/*"
]

Я запускаю команду:

yarn run cross-env NODE_PATH=./src BABEL_ENV=test node --inspect node_modules/mocha/bin/_mocha --compilers jsx:babel-register --require source-map-support/register -r mock-local-storage -r ./ui-test.helper.js "src/**/*.test@(.js|.jsx)" --reporter progress

Было бы замечательно, если бы кто-нибудь помог мне разобраться с этим, чтобы я мог заставить Моку правильно найти мои компоненты Typescript. Благодаря.

...