首页 > 解决方案 > 为赛普拉斯设置自定义默认导入路径

问题描述

我们使用 Cypress 来测试使用 Create React App 构建的应用程序,并且我们的 CRA 应用程序在.env- <code>NODE_PATH=src/ 中设置自定义导入路径 - 以便我们可以“绝对”导入文件,例如import Foo from 'components/Foo'vs.import Foo from '../../components/Foo'

问题是,如果我们将其中一个文件从 CRA 导入到赛普拉斯测试中,并且导入的文件包含诸如import routes from 'lib/routes'赛普拉斯不知道如何处理该路径的内容,则导入失败。

例子

假设我们有以下文件:

/cypress/integration/test.js

import routes from '../../src/lib/routes';

// Tests here…

/src/lib/routes.js

import { routeHelpers } from 'lib/routes';

// Routing code here

在这种情况下,/cypress/integration/test.js导入/src/lib/routes.js时会遇到绝对导入,'lib/routes'不知道如何解决该路径。

以这种方式搜索导入时,有没有办法为赛普拉斯设置自定义路径以包含在内?在这个任意示例的情况下,这意味着告诉赛普拉斯src用作解析导入的目录。

标签: cypress

解决方案


最简单的解决方案是简单地使用NODE_PATH=src. 所以我package.json的只是简单地更新为以下内容:

"scripts": {
    "cypress:open": "NODE_PATH=src cypress open",
    "cypress:run": "NODE_PATH=src cypress run",
},

推荐阅读