# svgr component 在 jest 無法被讀取 ###### tags: `react` `jest` `svg` ## 問題 svgr 在 jest 中無法被讀取,執行測試時會報錯 :::spoiler **錯誤訊息** :::danger Error: Uncaught [Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object. Check the render method of `YourComponent`.] ::: :::spoiler **套件版本** :::info "next": "12.2.5", "react": "18.2.0", "jest": "^29.0.1", "jest-environment-jsdom": "^29.0.1", "@svgr/webpack": "^6.3.1", ::: ## 解決方法 建立 **`/mock/svg.js`** ```javascript export default 'SvgrURL' export const ReactComponent = 'div' ``` 修改 **`jest.config.js`** ```javascript const nextJest = require('next/jest') const customJestConfig = { setupFilesAfterEnv: ['<rootDir>/jest.setup.js'], moduleDirectories: ['node_modules', '<rootDir>/'], testEnvironment: 'jest-environment-jsdom', } const createJestConfig = nextJest({ dir: './', })(customJestConfig) module.exports = async () => { const jestConfig = await createJestConfig() const moduleNameMapper = { '\\.svg$': '<rootDir>/mock/svg.ts', ...jestConfig.moduleNameMapper, } return { ...jestConfig, moduleNameMapper } } ```