Программно вбить внутри машинописи для SSR - PullRequest
0 голосов
/ 24 мая 2019

Как человек, у которого нет опыта работы с компилятором, который пытается заставить Линарию работать на бэкэнде.

Моя проблема в том, что я в настоящее время запускаю Typescript / Express / NodeJS на бэкэнде и хочу сервер-side-render моего React-приложения, содержащего "Linaria", которое нужно передать с помощью babel.

Как я могу преобразовать следующий код, приведенный ниже, чтобы программно пропустить приложение через транспортер babel и каким-то образом его SSR?тем не менее, не знаю, как это будет работать.

import { Request, Response } from "express";
import * as React from "react";
import ReactDOMServer from "react-dom/server";
import { ServerStyleSheet, StyleSheetManager } from "styled-components";
import { StaticRouter } from "react-router";
import { memoize } from "../util/memoize/memoize";
import { collect } from "linaria/server";
import { App } from "../../frontend/src/App";

const serverRender = memoize((url: string) => {
    const context = {};
    try {
        const html = ReactDOMServer.renderToStaticMarkup(
            <StaticRouter location={url} context={context}>
                <App />
            </StaticRouter>
        ); // Fails on <App/> Because styled hasn't been converted using babel.
        console.log(html);
    } catch (error) {
        // handle error

        console.error(error);
    }
});
...