[英]TypeScript + Babel + Jest not using moduleNameMapper for less files
[英]Next.js + Jest moduleNameMapper without TypeScript
我正在努力讓moduleNameMapper
與 NextJS / JavaScript 一起工作。 對於這個項目,我們沒有使用 TypeScript。
這是我的jsconfig.json
文件
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/components/*" : ["components/*"],
"@/styles/*" : ["styles/*"],
"@/config/*" : ["config/*"],
"@/hooks/*" : ["hooks/*"],
"@/store/*" : ["store/*"],
}
}
}
我可以在我的項目中執行以下操作
import Layout from "@/components/Layout"
import useFetch from "@/hooks/fetch"
但是,當我嘗試測試時,我收到此消息Cannot find module @/hooks/fetch from pages/account/login/index.js
這是我的jest.config.js
文件
const nextJest = require('next/jest');
const createJestConfig = nextJest({
dir: "./",
});
const customJestConfig = {
moduleDirectories: ["node_modules", "<rootDir>"],
moduleNameMapper: {
"^@/hooks/*": "/hooks/*"
},
testEnvironment: "jest-environment-jsdom",
}
module.exports = createJestConfig(customJestConfig)
如您所見,我正在嘗試 map moduleNameMapper
中的路徑,但這仍然無法正常工作。 我該如何糾正?
我希望對項目和測試項目使用相同的導入格式
非常感謝
設法通過更改jsconfig.js
文件來解決此問題
const nextJest = require('next/jest');
const customJestConfig = {
moduleDirectories: ["node_modules", "<rootDir>"],
testEnvironment: "jest-environment-jsdom",
};
const createJestConfig = nextJest({
dir: './',
})(customJestConfig);
module.exports = async () =>
{
// Create Next.js jest configuration presets
const jestConfig = await createJestConfig();
// Custom `moduleNameMapper` configuration
const moduleNameMapper = {
...jestConfig.moduleNameMapper,
'^@/(.*)$': '<rootDir>/$1',
};
return { ...jestConfig, moduleNameMapper };
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.