无法访问process.env属性

时间:2018-12-14 16:13:50

标签: javascript webpack

我正在使用webpack来构建我的Vue应用,该应用由nginx在ubuntu容器中提供。在我的生产webpack配置文件中,执行以下操作:

function resolve (dir) {
  return path.join(__dirname, '..', dir)
}

function injectConfigObject() {
  // This function reads the global
  // config yaml from the config folder.
  // Note that in production, we do not
  // have access to the config folder,
  // since the root folder will be on the
  // same level als the frontend folder.
  // Therefore the path is different for prod.
  let obj = {}
  let configPath = process.env.NODE_ENV == 'production' ? resolve('global_config.yml') : resolve('../config/global_config.yml')
  try {
    obj = yaml.load(configPath)
  } catch(e) {
    console.log('e', e)
  }

  return obj

}

在插件中

new webpack.DefinePlugin({
  'process.env': {
    'NODE_ENV': JSON.stringify(process.env.NODE_ENV),
    'CONFIG': JSON.stringify(injectConfigObject())
  }

现在,当我在此process.env.CONFIG对象上使用console.log时, 我很好地看到了所有属性,例如

{…}
​
CONFIG: {…}
​​
allowed_subtypes: Object { string: (3) […], float: (1) […], int: (1) […], … }
​​
na_values: Array(16) [ "", "#N/A", "#N/A N/A", … ]
​​
type_mapping: Object { inferred: (2) […], string: (2) […], float: (2) […], … }
​​
<prototype>: Object { … }
​
NODE_ENV: "production"
​
TEST: "test"

但是当我尝试访问任何属性时,例如process.env.CONFIG.allowed_subtypes,我未定义。

我尝试了其他SO帖子中建议的一切,例如

  • 使用setTimeOut(function() { // access the props here }, 100}
  • 使用Object.assign({}, process.env.CONFIG.allowed_subtypes)
  • 使用JSON.parse(JSON.stringify(process.env.CONFIG.allowed_subtypes))

没有任何效果。奇怪的是,我在开发配置中(使用npm run dev做同样的事情,并且在那些构建中,我可以访问那些对象属性。有人知道吗?

0 个答案:

没有答案