отреагировать на конфигурации рендеринга на стороне сервера - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь выполнить рендеринг приложения для сервера, я настроил babel с помощью preset-env, чтобы разрешить использование оператора импорта, но, похоже, он не работает, когда я запускаю сервер, я получаю эту ошибку: SyntaxError: Cannot use import statement outside a module

пакет. json:

"babel": {
    "presets": [
      "react",
      "env",
      "stage-2"
    ]
  }, 

"devDependencies": {
    "babel-eslint": "^7.2.3",
    "eslint": "^3.19.0",
    "eslint-plugin-react": "^6.10.3",
    "jest": "^19.0.2"
  },
  "dependencies": {
    "babel-cli": "^6.24.1",
    "babel-loader": "^7.0.0",
    "babel-polyfill": "^6.23.0",
    "babel-preset-env": "^1.4.0",
    "babel-preset-react": "^6.24.1",
    "babel-preset-stage-2": "^6.24.1",
    "ejs": "^2.5.6",
    "express": "^4.15.2",
    "pm2": "^2.4.6",
    "react": "^15.5.4",
    "react-dom": "^15.5.4",
    "webpack": "^2.5.0"

сервер. js:

app.use("/", (req,res)=>{
  const initialContent = serverRender();
  res.render("index",{initialContent}); 
});

serverRender. js:

import React from "react";
import ReactDOMServer from  "react-dom/server";
import App from "./components/app";

const serverRender =()=>{
  return ReactDOMServer.renderToString(<App/>);
};

export default serverRender;

1 Ответ

0 голосов
/ 10 февраля 2020

я использую babel на моей серверной стороне моего пакета. json имеет эти пакеты, связанные с babel.

"scripts": {  
    "babel-node": "babel-node ",     
    "start": "nodemon --exec npm run babel-node -- ./app.js",
  },

  "devDependencies": {
    "babel-polyfill": "^6.26.0",
    "babel-cli": "^6.26.0",
    "babel-eslint": "^8.2.2",
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-preset-env": "^1.7.0",
    "babel-preset-latest": "^6.24.1",
    "babel-register": "^6.26.0",
  }

для предустановки я создал .babelr c файл

{
  "presets": ["env"],

  "plugins": [
    [
      "transform-runtime",
      {
        "polyfill": false,
        "regenerator": true
      }
    ],   
  ]
 }

надеюсь, это поможет

...