【发布时间】:2017-06-19 00:10:59
【问题描述】:
这是我的测试文件
// /imports/components/main.test.js
import React from 'react'
import { shallow, mount } from 'enzyme'
import Main from './main'
import TextInput from "/imports/ui/textInput"
...
而 main.js 有
// /imports/components/main.js
import { action1 } from "/imports/actions/myAction"
但是当我运行测试时它会抛出一个错误,说
Cannot find module '/imports/actions/myAction' from 'main.js'
如果我评论 import './main',导入 TextInput 也会发生同样的事情。我在 node_modules 中导入模块没有问题。
如何告诉 Jest 或 webpack 使用项目目录中的绝对路径(即import Foo from /imports/...)导入组件?
【问题讨论】:
-
如果在您的测试文件的同一级别有一个名为 imports 的目录,您应该在一个点上:import TextInput from "./imports/ui/textInput"
-
对不起,我错过了目录结构。我添加了组件和测试文件的位置路径,它基本上也在 /imports 内。
-
你可以像
import TextInput from "../ui/textInput"in main.test.js 和import { action1 } from "../actions/myAction"一样简单地导入。如果你想用绝对路径导入,那么你必须在你的 webpack.config 中做别名,然后像import { action1 } from "imports/actions/myAction"这样导入。 -
../actions/myAction是从 main.js 导入的,而不是测试文件,它在组件上运行良好。而且我不需要在测试文件中导入它。在测试文件中,我只需要导入 main.js 组件和 textInput 来测试浅层渲染。如果造成混淆,我很抱歉。
标签: reactjs webpack jestjs enzyme