Как предоставить переменные env `babel-preset-Reaction-app`? - PullRequest
0 голосов
/ 06 мая 2018

Я работаю над приложением, которое соединяет приложение create-реакции с приложением экспресс-сервера (с использованием рендеринга сервера). Я имею в виду этот урок . Для рендеринга файла с сервера код

bootstrap.js

require('ignore-styles');
require('babel-register')({
ignore:[/(node-modules)/],
presets:['es2015','react-app']
});
require('./index');

index.js

import express from 'express';
// we'll talk about this in a minute:
import serverRenderer from './middleware/renderer';


const PORT = 3000;
const path = require('path');
// initialize the application and create the routes
const app = express();
const router = express.Router();
// root (/) should always serve our server rendered page
router.use('^/$', serverRenderer);
// other static resources should just be served as they are
router.use(express.static(
    path.resolve(__dirname, '..', 'build'),
    { maxAge: '30d' },
));
// tell the app to use the above rules
app.use(router);
// start the app
app.listen(PORT, (error) => {
    if (error) {
        return console.log('something bad happened', error);
    }

    console.log("listening on " + PORT + "...");
});

Во время выполнения команды

node bootstrap.js

Я получаю сообщение об ошибке

Ошибка: для использования babel-preset-react-app необходимо указать переменные окружения NODE_ENV или BABEL_ENV. Допустимые значения: "разработка", "тестирование" и "производство".

1 Ответ

0 голосов
/ 06 мая 2018

Здесь есть несколько вариантов. Я опишу самые простые варианты.

Самый простой способ - запустить ваш узел bootstrap.js следующим образом:

NODE_ENV=production BABEL_ENV=production node bootstrap.js

Но это слишком долго, чтобы помнить каждый раз, поэтому вы можете использовать сценарии package.json.

Если вы откроете свой файл package.json, вы должны увидеть раздел скриптов (если нет, см. Документ ). В этом разделе сценариев вы можете создавать свои собственные сценарии.

В основном я использую 2 сценария, один для разработки и один для производства. Так что в вашем случае что-то вроде:

"scripts": {
   "start": "NODE_ENV=development BABEL_ENV=development node bootstrap.js node bootstrap.js",
   "serve": "NODE_ENV=production BABEL_ENV=production node bootstrap.js node bootstrap.js"
}

Теперь вы можете запустить ваше приложение для узла следующим образом:

В разработке

node run start или node start (поскольку запуск узла является псевдонимом запуска запуска узла)

и в производстве

node run serve (здесь нет сокращений)

Если вы все еще думаете, что ваш package.json становится слишком большим, вы можете абстрагировать его до некоторых файлов .js. И измените ваши сценарии соответственно на что-то вроде:

"scripts": {
   "start": "node scripts/start.js"
   "serve": "node scripts/serve.js"
}

В этих файлах сценариев вы можете определить обе эти переменные среды перед запуском приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...