.env 不适用于 AVA

.env do not work with AVA

当我尝试 运行 我的测试使用 ava 和我使用 dotenv-safe

的项目时,我收到以下错误
{ [Error: ENOENT: no such file or directory, open '.env'] errno: -2, code: 'ENOENT', syscall: 'open', path: '.env' }
fs.js:549
  return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
                 ^

Error: ENOENT: no such file or directory, open '.env.example'

看来 ava 没有找到 .env 或 .env.example 文件

是否有任何解决方法或解决方案?

这是一个您可以轻松重现问题的回购协议:https://github.com/sibelius/koa-env-ava

快速浏览一下,这是一个可以正常工作的 PR:https://github.com/sibelius/koa-env-ava/pull/1

发生的事情是 dotenv-safe 不知道在哪里可以找到您的 .env.env.example 文件,所以它会在 src 目录中查找并抛出一个错误。我重写了您的 src/config.js 文件以自动查看您的项目根目录:

const root = require('path').join.bind(this, __dirname, '..');

require('dotenv-safe').load({
  path: root('.env'),
  sample: root('.env.example')
});

export const API_URL = process.env.API_URL;
export const SERVER_PORT = process.env.SERVER_PORT;

这样 dotenv-safe 知道从哪里加载您的 .env 文件。