Как отобразить следующую JS страницу на пользовательском Express сервере - PullRequest
0 голосов
/ 18 марта 2020

Я работаю над проектом Next JS, и мне нужна форма, загруженная на сервер, чтобы иметь возможность загружать файлы, чтобы я использовал multer вместе с express на пользовательском сервере.

Теперь по запросу GET я хочу отобразить определенную c страницу, но я не уверен, как я могу это сделать. Я не хочу иметь html на сервере, просто вызов страницы. Это вообще возможно?

server.get('/', (req,res) => {
  res.send(ReactDOMServer.renderToString(<myPage />))
});

при запуске сервера я получаю следующее:

/ Users / MONOLITH-Strat-Audrey / Projects / sandbox / multer-file -upload / server. js: 41

res.send(ReactDOMServer.renderToString(<myPage />))

^

SyntaxError: неожиданный токен <</p>

На сервере I Я называю страницу, как это, что, очевидно, не работает.

const myPage = require('./pages/index')

Для справок, это мой github со всем кодом. Github Repo

1 Ответ

2 голосов
/ 18 марта 2020

В вашем коде есть многочастная ошибка.

  • Никогда не импортируйте компоненты React на сервер. js или файл точек входа узла.
  • Все страницы должны находиться внутри страниц каталога для Далее. js для его анализа и обслуживания.

Ниже приведены внесенные изменения и он начал работать

Удалить или прокомментировать строку ниже с сервера. js

const myPage = require('./pages/index')

В строка 48 - сервер. js

  server.get('/',function(req,res){
    // res.write(ReactDOMServer.renderToString(<myPage />))
    return app.render(req, res, '/', query)
  });

В вашем компонентах / файле. js render метод возвращает jsx

class File extends Component {
  render() {
    return (<form action="/uploadfile" enctype="multipart/form-data" method="POST"> 
      <input type="file" name="myFile" />
      <input type="submit" value="Upload a file"/>
    </form>)
  }
}

Ссылки для пользовательских сервер использует Next. js

...