Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Конфиг приложения вне бандла в изоморфном приложении. (https://javascript.ru/forum/node-js-io-js/68470-konfig-prilozheniya-vne-bandla-v-izomorfnom-prilozhenii.html)

cartilaga 18.04.2017 20:46

Конфиг приложения вне бандла в изоморфном приложении.
 
Подскажите, как решить такую задачу.

Изоморфное приложение, сборка webpack. И клиентская и серверная часть обращаются к API. Урл, по которому происходит обращение, необходимо вынести в отдельный файл с конфигом, за пределами сборки. То есть, можно поменять урл не делая новый билд.

Если подробнее, то:
В продакшене сервер запускается из dist/srv.js, на клиент уходит dist/bunde.js.
В деве сервер запускается из src/server/server.js (работает на express), c клиентом общается webpackDevMiddleware/webpackHotMiddleware.
Конфиг нужен, например, в модуле src/api/thisIsApi.js

Вроде бы что то тривиальное, но несколько дней убил на это без результата.

cartilaga 19.04.2017 17:51

получилось как то так:
webpack.config.js (серверный билд)
...
externals: { "../config.js": "require('../config.js')"}
...

config.js
module.exports = {
apiUrl:'http://localhost:1234/api'
};

src/getConfig.js
let config;
if (typeof window !== 'undefined') {
config = window.__CONFIG__;
} else {
config = require('../config.js');
}
export default config;

src/server/server.js
import config from '../getConfig';
///Шаблон HTML
...
<script type="application/javascript">
window.__CONFIG__ = ${JSON.stringify(config)};
</script>
...

И потом где потребуется запрашивать через getConfig.js


Часовой пояс GMT +3, время: 03:55.