javascript - ember js 访问环境来自供应商文件中的 ember-cli-build
问题描述
在我的ember-cli-build.js
文件中,我正在导入一个名为new-relic
using的供应商库app.import('vendor/new-relic.js')
,我想将一个名为的参数传递env
给 new-relic 供应商文件并在new-relic.js
文件中使用它。我试着做
app.import('vendor/new-relic.js', { env: 'production' });
当我尝试控制台登录env
供应商文件时,它显示undefined
. 有没有办法将环境传递给供应商文件?
解决方案
当您app.import
使用供应商文件时,它不会在与ember-cli-build.js
构建时相同的节点环境中执行,而是在运行时在您用户的浏览器上执行,因此无法将环境作为参数传递。
但是,Ember 通过以下方式自动使浏览器中的环境可用。这是您可以在初始化程序中的窗口对象上设置它的方法:
import ENV from 'config/environment';
export function initialize() {
window.env = ENV.environment;
}
export default { initialize };
这将在您的 ember 应用程序启动后立即在窗口对象上提供环境。如果您的供应商文件访问它,那么这将起作用。
然而,这可能还不够早。env
一旦浏览器读取 new-relic.js 文件,您可能需要该变量可用。为了处理这样的用例,您可能需要contentFor
在插件中使用钩子。已经为您编写了一个不错的插件来执行此操作:ember-cli-content-for-config
. 有了它,您可以将其添加到您的index.html
:
<script>
window.env = '{{content-for 'config.environment'}}';
</script>
在此处查看插件的自述文件:https ://github.com/bmac/ember-cli-content-for-config
您还需要更改 new-relic.js 以env
在全局命名空间(窗口对象)中查找变量。
推荐阅读
- flutter - Flutter - 何时使用 setState() 安装?
- html - Add different number of items per row using CSS Selector
- php - Laravel 路由 URL 问题
- go - Antlr4 Listener 子树检查条件
- java - 启动新活动时Android Studio打开应用程序
- javascript - How does onchange and onkeyup work in javascript?
- wireshark - 如何过滤捕获的包?
- sql - oracle中的自定义排序
- apache-spark - 拆分数据数据类型后的Spark RDD如何在不更改数据类型的情况下拆分
- python - 如何从python中的多个文件中删除扩展名