获取 vue-cli-service test:unit 从不同的文件加载环境变量(不是 .env.test)

Get vue-cli-service test:unit to load environment variables from a different file (not .env.test)

使用 Vue CLI 和 Jest。在我的 packages.config 中,我有:

"test:unit": "vue-cli-service test:unit",

通过反复试验,我发现这会导致加载 .env.test 环境变量文件,并将 NODE_ENV 变量设置为生产环境。这是我正在测试的基本测试:

import { mount } from '@vue/test-utils'
import Home from './Home'

describe('Home', () => {
  test('is a Vue instance', () => {
    console.log('=================================================');
    console.log('ENVVAR=' + process.env.ENVVAR);
    console.log('NODE_ENV=' + process.env.NODE_ENV);
    console.log('=================================================');
    const wrapper = mount(Home);
    expect(wrapper.isVueInstance()).toBeTruthy();
  });
});

不幸的是,vue-cli-service 在使用 test:unit 时没有 --mode 选项。我需要让 vue-cli-service 为特定环境加载变量,并将 NODE_ENV 设置为特定的内容,例如:

"test:unit": "vue-cli-service test:unit --mode foo",

如果存在,我需要它来加载 .env.foo 环境变量。理想情况下,它也会将 NODE_ENV 更改为 foo,但这不太重要。

如果我将 packages.config 更改为:

"test:unit": "set NODE_ENV=foo&&vue-cli-service test:unit",

确实将 NODE_ENV 设置为 foo,但 vue-cli-service 坚持加载 .env.test 而不是 .env.foo。此外,我得到了一堆这样的错误:

  console.error node_modules/vue/dist/vue.runtime.common.dev.js:621
    [Vue warn]: Unknown custom element: <v-app> - did you register the component correctly? For recursive components, make sure to provide the "name" option.

    found in

    ---> <App>
           <Root>

那么有什么方法可以让 vue-cli-service 加载特定的环境变量,而不是 .env.test?

谢谢

为了解决这个问题,我什至没有使用 vue-cli-service。

在我的packages.json下脚本:

"test:unit": "./node_modules/.bin/jest",

然后我创建了这个 setup.js 文件:

process.env.NODE_ENV='foo';
var dotenv = require("dotenv");
// Load in reverse order (variables in second file will not override variables in first)
dotenv.config({ path: '.env.foo' });
dotenv.config({ path: '.env' });

并在我的 jest.config.js 中引用了它:

setupFiles: ["./src/.jest/setup.js"],

现在加载正确的环境变量,NODE_ENV 设置为 'foo'(在本例中)。