Set*_*ine 22 node.js npm reactjs jestjs
运行Jest时收到以下错误
Cannot find module 'src/views/app' from 'index.jsx'
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:179:17)
at Object.<anonymous> (src/index.jsx:4:12)
Run Code Online (Sandbox Code Playgroud)
index.jsx
import AppContainer from 'src/views/app';
Run Code Online (Sandbox Code Playgroud)
的package.json
"jest": {
"collectCoverageFrom": [
"src/**/*.{js,jsx,mjs}"
],
"setupFiles": [
"<rootDir>/config/polyfills.js"
],
"testMatch": [
"<rootDir>/src/**/__tests__/**/*.{js,jsx,mjs}",
"<rootDir>/src/**/?(*.)(spec|test).{js,jsx,mjs}"
],
"testEnvironment": "node",
"testURL": "http://localhost",
"transform": {
"^.+\\.(js|jsx|mjs)$": "<rootDir>/node_modules/babel-jest",
"^.+\\.css$": "<rootDir>/config/jest/cssTransform.js",
"^(?!.*\\.(js|jsx|mjs|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
},
"transformIgnorePatterns": [
"[/\\\\]node_modules[/\\\\].+\\.(js|jsx|mjs)$"
],
"moduleDirectories": [
"node_modules",
"src"
],
"moduleNameMapper": {
"^react-native$": "react-native-web"
},
"moduleFileExtensions": [
"web.js",
"js",
"json",
"web.jsx",
"jsx",
"node",
"mjs"
]
},
Run Code Online (Sandbox Code Playgroud)
运行仅包含树中相对路径的文件的测试运行正常.
要澄清,我正在寻找如何配置Jest以在绝对路径上不失败.
twi*_*ls0 21
我认为您在寻找:根目录或modulePaths和moduleDirectories
您可以同时添加相对路径和绝对路径。
我将确保将其包含<rootDir>在roots数组,<rootDir>modulePaths数组和node_modulesmoduleDirectories数组中,除非您有充分的理由将它们排除在外。
"jest": {
"roots": [
"<rootDir>",
"/home/some/path/"
],
"modulePaths": [
"<rootDir>",
"/home/some/other/path"
],
"moduleDirectories": [
"node_modules"
],
}
Run Code Online (Sandbox Code Playgroud)
Hri*_*odi 17
既然package.json你有:
"moduleDirectories": [
"node_modules",
"src"
]
Run Code Online (Sandbox Code Playgroud)
这表示您导入的每个模块将node_modules首先进行查看,如果未找到,将查看src目录.
因为它正在调查src指南你应该使用:
import AppContainer from 'views/app';
Run Code Online (Sandbox Code Playgroud)
请注意,此路径对于src目录是绝对的,您不必导航以将其定位为相对路径.
或者,您可以在pakcage.json中的moduleDirectories中配置根目录,以便可以根据需要导入所有组件.
那是因为 jest 无法识别相对导入,例如src/views/app
添加rootDir和modulePathspackage.json
"name": "my-app",
...
"jest": {
...
"rootDir": "./",
"modulePaths": [
"<rootDir>"
],
...
}
}
Run Code Online (Sandbox Code Playgroud)
添加
"moduleDirectories": [
"node_modules",
"src"
]
Run Code Online (Sandbox Code Playgroud)
如果你的 package.json 文件中有 Jest 的配置,应该可以工作。
如果你有一个jest.config.js文件,你应该在那里添加它,否则 package.json 将被这个配置文件覆盖(并忽略)。所以在你的jest.config.js文件中:
module.exports = {
// ... lots of props
moduleDirectories: ["node_modules", "src"],
// ...
}
Run Code Online (Sandbox Code Playgroud)
就我而言,我正在运行集成测试,并且所有测试都位于路径 src/int-test.spec.ts 的同一文件中,以便读取我必须编写的路径:
解决方案1
"jest": {
...,
"moduleNameMapper": {
"src/(.*)": "<rootDir>/$1"
}
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是创建 jest.config.js 文件,如果该文件名为 jest.config.js|ts|mjs|cjs|json,则会自动发现该文件。并将其放入其中:
解决方案2
const path = require('path');
module.exports = {
moduleFileExtensions: ['js', 'json', 'ts'],
roots: ['src'],
testRegex: '.*\\.spec\\.ts$',
transform: {
'^.+\\.(t|j)s$': 'ts-jest',
},
collectCoverageFrom: ['**/*.(t|j)s'],
coverageDirectory: '../coverage',
testEnvironment: 'node',
moduleDirectories: ['node_modules', 'src', __dirname],
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23478 次 |
| 最近记录: |