Я использую веб-пакет для сборки своего приложения Vue, которое обслуживается nginx в контейнере ubuntu.В моем файле конфигурации рабочего пакета я делаю следующее:
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())
}
Теперь, когда я использую console.log для этого объекта process.env.CONFIG, яприятно видеть все свойства, например
{…}
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))
Ничего не работает,Странно то, что я делаю то же самое в моей конфигурации dev (используя npm run dev
), и в этих сборках я могу получить доступ к этим свойствам объекта.У кого-нибудь есть идея?