获取 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'(在本例中)。
使用 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'(在本例中)。