Я использую webpack для объединения изоморфного приложения JS (based on this example), чтобы браузер выполнял тот же код, что и сервер. Все идет гладко, за исключением того, у меня есть config.js
с некоторыми параметрами, которые тянули в из переменных окружения на сервере:Переменные окружения в изоморфном приложении JS: найти и заменить Webpack?
module.exports = {
servers:
auth: process.env.AUTH_SERVER_URL,
content: process.env.CONTENT_SERVER_URL
}
}
На сервере это большое, но когда WebPack делает это для клиента process
пуст, и это не работает.
Я надеюсь, что есть что-то вроде «найти и заменить» плагин webpack, который заменит их своим содержимым только в этом файле?
"…config.js content…".replace(/process\.env\.([a-z0-9_]+)/, function(match, varName) {
return process.env[varName];
})
Я нашел [envify] (https://www.npmjs.com/package/envify-loader), но мне сложно его настроить. –
Существует плагин, который позволяет настраивать среду whitelist var, которая должна быть встроена: 'new webpack.EnvironmentPlugin ([" AUTH_SERVER_URL "," CONTENT_SERVER_URL "])' –
Проблема в том, что машина, которая создает среду, не всегда одна тот, который запускает код (это верно в нашем случае). Один из способов - поместить их в «global» и «window» в HTML, но это не мое любимое решение. –