在 next.js 中使用 jest 导入时找不到模块错误

时间:2021-01-20 12:52:14

标签: reactjs unit-testing jestjs next.js enzyme

我正在尝试在我的 Next.js 项目中配置 Jest。在我的测试文件中,我已经导入了我的组件,如 import { HamburgerMenu } from './HamburgerMenu.jsx'。在该组件中,还有许多其他导入。其中一个是

import {
  checkValidEmail, getNumbers, getFormttedPhoneNo, validateSubscription,
} from 'helpers/utils';

当我运行测试时,它给了我以下错误(在上面的导入语句中):

Cannot find module 'helpers/utils' from 'components/common/Smart/HamburgerMenu/HamburgerMenu.jsx'

这里是详细信息。

jest.config.js(在根目录)

module.exports = {
  collectCoverageFrom: [
    '**/*.{js,jsx,ts,tsx}',
    '!**/*.d.ts',
    '!**/node_modules/**',
  ],
  setupFilesAfterEnv: ['<rootDir>/jest.setup.js'],
  testPathIgnorePatterns: ['/node_modules/', '/.next/'],
  transform: {
    '^.+\\.(js|jsx|ts|tsx)$': '<rootDir>/node_modules/babel-jest'
  },
  transformIgnorePatterns: [
    '/node_modules/',
    '^.+\\.module\\.(css|sass|scss)$',
  ],
  moduleNameMapper: {
    '^.+\\.module\\.(css|sass|scss)$': 'identity-obj-proxy',
  },
}

我在 ESLint 文件中添加了 jest: true

babel.config.js 文件(在根目录下):

module.exports = {
  presets: ["next/babel"],
  plugins: [["babel-plugin-styled-components", { ssr: true }]]
};

1 个答案:

答案 0 :(得分:0)

您可以尝试添加

...
moduleDirectories: ['node_modules', '.'],
...

到您的jest.config.js