我需要在 Cypress 测试中使用 Next.js 项目中的一些环境变量,似乎正确的方法是使用 loadEnvConfig
@next/env
。
赛普拉斯支持在每次测试之前运行代码通过其支持文件。
这就是我的支持文件的样子:
import { loadEnvConfig } from '@next/env'
import './commands'
loadEnvConfig('/path/to/my/project')
当我在开发模式下运行 Next,然后运行 Cypress 时,我在控制台中收到以下错误:
index.js:1 Failed to load env from .env.production.local TypeError: t.statSync is not a function
at loadEnvConfig (index.js:1)
at Object../cypress/support/index.js (index.js:4)
at __webpack_require__ (bootstrap:19)
at Object.0 (tests?p=cypress/support/index.js:682)
at __webpack_require__ (bootstrap:19)
at eval (bootstrap:83)
at eval (bootstrap:83)
at eval (<anonymous>)
还有另外三个类似的,分别是
.env.local
、.env.production
和.env
。
我正在使用 Jest,但是我的问题可能与您遇到的问题相同;查看 Next 配置文档
中的注释很高兴知道:类似于默认环境变量,
文件 应该包含在您的存储库中,但.env.test
不应该包含, 因为.env.test.local
旨在通过.env*.local
被忽略。.gitignore
只需复制
.env.local
-> .env.test.local
即可解决问题。