我正在使用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
做同样的事情,并且在那些构建中,我可以访问那些对象属性。有人知道吗?