- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个项目,该项目使用 process.env.APP_ENV
中的值,以便为当前环境选择合适的配置文件:
import prodParams from './production';
import stgParams from './staging';
import devParams from './development';
let params = devParams;
switch (process.env.APP_ENV) {
case 'production':
params = prodParams;
break;
case 'staging':
params = stgParams;
break;
default:
params = devParams;
}
export default params;
我正在尝试使用以下代码对此进行测试(尚未使用断言):
import params from '../../../parameters';
...
it.only('should return the appropriate config ', (done) => {
process.env.APP_ENV = 'production';
console.log(params);
done();
});
但是,当我如上所示设置环境变量 process.env.APP_ENV
时,它仍然到达未定义的模块,因此它总是返回开发配置而不是生产环境。
抛开测试部分,功能运行良好,但无论如何我都想测试它。
关于如何解决这个问题有什么建议吗?
最佳答案
import
语句在任何其他代码之前执行,因此您不能使用 import
来完成这项工作。
如果在设置环境变量后需要参数文件,您可以有点让它与require
一起工作:
process.env.APP_ENV = 'production';
let params = require('../../../parameters').default;
...
但是,这仍然不是很好,因为 require
维护的缓存(后续测试将 APP_ENV
设置为不同的缓存,它只能工作一次值将不起作用)。
解决方法是让 parameters.js
导出您要调用的函数:
// parameters.js
export default function() {
let params = devParams;
switch (process.env.APP_ENV) {
...
}
return params;
}
// test.js
import getParams from '../../../parameters';
...
process.env.APP_ENV = 'production';
let params = getParams();
或者在外部设置APP_ENV
:
$ env APP_ENV='production' mocha ...
关于javascript - 使用依赖于环境变量 process.env.APP_ENV 的 mocha 测试配置模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39587672/
我现在在构建允许使用 zend for app 构建控制台脚本的机制时遇到问题。例如像: --脚本 ----index.php ----basecmd.php 当 basecmd 包含其他脚本的主类时
以下代码适用于我的开发环境(Ubuntu 14.04 桌面) @if(env('APP_ENV') === 'production') // ... something 但是由于某种原因,生产
默认情况下,Symfony 需要在 Web 服务器上而不是在应用程序中进行配置。就我而言,在服务器上设置这些变量非常复杂。所以,我想要的是在应用程序(php 或 yaml)中设置这些变量没有 DotE
我正在 docker 容器中开发一个新的 Symfony 4.0 应用程序(Apache SSL 容器代理到 Symfony 容器)。一切都适合开发环境。在 docker 容器内,APP_ENV 被设
我正在开发一个项目,该项目使用 process.env.APP_ENV 中的值,以便为当前环境选择合适的配置文件: import prodParams from './production'; imp
我正在使用 Laravel,这是我的 ./phpunit.xml 文件 ./tests/Feature
我设置了两条路线 Route::get('/bugreport', 'SomeController@create') ->middleware('signed') ->name('bu
我似乎找不到任何形式的 APP_ENV 的官方列表.env 中的变量文件。在实践中我使用过 local , dev , development , staging , 和 production .我觉
我正在生产环境中部署 Symfony 4 项目。创建了 .env 文件,其内容为: APP_ENV=prod APP_DEBUG=0 运行 Composer : $ composer install
使用有何区别env('APP_ENV') , config('app.env')或 App::environment()获取应用环境? 我知道env('APP_ENV')将至 $_ENV , conf
我最近将一个新的 Symfony 4 项目部署到生产服务器,我在其中设置(通过 ssh)APP_ENV 和 APP_SECRET 作为环境变量。 printenv 和 set 这两个命令都在其输出中列
我最近将一个新的 Symfony 4 项目部署到生产服务器,我在其中设置(通过 ssh)APP_ENV 和 APP_SECRET 作为环境变量。 printenv 和 set 这两个命令都在其输出中列
我是一名优秀的程序员,十分优秀!