ember vendor文件中的js访问环境来自ember-cli-build
ember js access environment from ember-cli-build in the vendor file
在我的 ember-cli-build.js
文件中,我正在使用 app.import('vendor/new-relic.js')
导入一个名为 new-relic
的供应商库,我想将一个名为 env
的参数传递给新的-relic vendor 文件并在 new-relic.js
文件中使用它。我试过
app.import('vendor/new-relic.js', { env: 'production' });
当我尝试在供应商文件中控制台记录 env
时,它显示 undefined
。有什么方法可以将 env 传递给供应商文件吗?
当您 app.import
供应商文件时,它不会在构建时在与 ember-cli-build.js
相同的节点环境中执行,而是在 运行 时在您的用户浏览器中执行,所以无法将环境作为参数传递。
但是,Ember 通过以下方式自动使环境在浏览器中可用。这是在初始化程序中的 window 对象上设置它的方法:
import ENV from 'config/environment';
export function initialize() {
window.env = ENV.environment;
}
export default { initialize };
一旦您的 ember 应用程序启动,这将使 window 对象上的环境可用。如果您的供应商文件随后访问它,这将起作用。
然而,这可能还不够早。您可能需要 env
变量在浏览器读取新的 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 以在全局命名空间(window 对象)中查找 env
变量。
在我的 ember-cli-build.js
文件中,我正在使用 app.import('vendor/new-relic.js')
导入一个名为 new-relic
的供应商库,我想将一个名为 env
的参数传递给新的-relic vendor 文件并在 new-relic.js
文件中使用它。我试过
app.import('vendor/new-relic.js', { env: 'production' });
当我尝试在供应商文件中控制台记录 env
时,它显示 undefined
。有什么方法可以将 env 传递给供应商文件吗?
当您 app.import
供应商文件时,它不会在构建时在与 ember-cli-build.js
相同的节点环境中执行,而是在 运行 时在您的用户浏览器中执行,所以无法将环境作为参数传递。
但是,Ember 通过以下方式自动使环境在浏览器中可用。这是在初始化程序中的 window 对象上设置它的方法:
import ENV from 'config/environment';
export function initialize() {
window.env = ENV.environment;
}
export default { initialize };
一旦您的 ember 应用程序启动,这将使 window 对象上的环境可用。如果您的供应商文件随后访问它,这将起作用。
然而,这可能还不够早。您可能需要 env
变量在浏览器读取新的 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 以在全局命名空间(window 对象)中查找 env
变量。