这是@dbendaou 在Ember Discord上提出的一个问题
从插件中的配置/环境访问 ENV 的最佳方法是什么?
我在想,getOwner(this).lookup('config:environment')
但它不起作用,也没有import ENV from '../config/environment';
这是@dbendaou 在Ember Discord上提出的一个问题
从插件中的配置/环境访问 ENV 的最佳方法是什么?
我在想,getOwner(this).lookup('config:environment')
但它不起作用,也没有import ENV from '../config/environment';
从插件,特别是,因为你的上下文没有定义环境,你需要一个稍微不同的 API:
import { getOwner } from '@ember/application';
// ....
export default class MyAddonComponent extends Component {
get env() {
getOwner(this).resolveRegistration('config:environment')
}
}
import ENV from '../config/environment'
是一个别名import ENV from '<app-name>/config/environment';
,插件无法知道它<app-name>
是什么。
也许相关,因为这在不和谐中出现了很多次,这也是您在运行时访问环境变量的方式。environment.js 是一个构建时文件,因此它可以访问您的应用程序构建的节点环境,并输出一个 JSON 对象供您的应用程序使用。
例如:
// <your-app>/config/environment.js
const MY_ENV_VAR = process.env;
module.exports = function (environment) {
let ENV = {
// ...
MY_ENV_VAR,
};
return ENV;
}
然后,您的插件可以MY_ENV_VAR
通过 resolveRegistration 访问。并且应用程序可以通过导入访问它。
应用:
import ENV from '<app-name>/config/environment'
// ...
ENV.MY_ENV_VAR
插件:
getOwner(this).resolveRegistration('config:environment').MY_ENV_VAR;