Strapi v3中如何将.env配置变量传入后台插件?
解决Strapi自定义插件无法获取.env环境变量的问题
问题根源
你当前的配置存在两个关键错误:
DefinePlugin中定义的变量名带有多余空格('JUST_A_TEST '),和.env里的变量名JUST_A_TEST不匹配- 没有用
JSON.stringify()包裹环境变量值,webpack的DefinePlugin会直接将值替换到代码中,字符串类型的变量需要被转为字面量形式
正确配置步骤
1. 修正admin.config.js的webpack配置
// ./admin/admin.config.js module.exports = ({ env }) => ({ webpack: (config, webpack) => { config.plugins.push( new webpack.DefinePlugin({ // 移除变量名的空格,并用JSON.stringify处理值 'JUST_A_TEST': JSON.stringify(env('JUST_A_TEST')), }) ); return config; }, });
2. 在插件admin代码中访问变量
现在可以直接在插件文件中使用定义的变量:
// ./plugins/myplugin/admin/src/containers/HomePage/index.js const test = JUST_A_TEST; // 现在可以正常获取到值
额外说明
如果需要将环境变量仅暴露给特定插件,也可以通过插件的原生配置传递:
- 在插件的
strapi-server.js中读取环境变量并传递给admin端:
// ./plugins/myplugin/server/strapi-server.js module.exports = ({ env }) => ({ admin: { config: { justATest: env('JUST_A_TEST'), }, }, });
- 在插件admin代码中通过
strapi对象访问:
// ./plugins/myplugin/admin/src/containers/HomePage/index.js const test = strapi.plugin('myplugin').config.justATest;
内容的提问来源于stack exchange,提问作者Patrick Perron
相关产品推荐
相关产品推荐

