‘serve’ не распознается как внутренняя или внешняя команда для запуска приложения react

#reactjs #deployment #external #internals #serve

#javascript #reactjs #развертывание #serve

Вопрос:

serve был установлен глобально с помощью npm install -g serve команды и работает локально, но развертывание на сервере Windows выдает следующую ошибку:

«serve» не распознается как внутренняя или внешняя команда

Как исправить эту ошибку? Кроме того, для чего используется server.js файл в react проекте и как он помогает при развертывании?

служба npm установлена глобально пожалуйста, нажмите здесь, чтобы увидеть изображение введите описание изображения здесь

Ответ №1:

Я знаю, что запуск npx serve -s build должен работать. У меня была та же проблема, что и у вас. Команда npx работает для меня. Если у вас проблемы с npx, проверьте свою версию nodejs. Я использую 10.16.2 (так что мы находимся на одной странице). https://www.npmjs.com/package/serve

Остальная часть вашего вопроса относится к остальной части вашей настройки. У меня нет server.js мой собственный файл (есть несколько node_module server.js файлы, это то, что вы имеете в виду)?

Насколько я понимаю, create-react-app, npm run start позволит вам запускать ваше приложение локально. Мне это не нужно serve -s build для этого.

Я использовал приложение amplify create react. Для приложения amplify я просто запускаю amplify publish , и каталог сборки моего приложения отправляется в корзину S3 для меня. Если у вас нет такой конфигурации, и вы хотите получить быстрый и грязный ответ… просто возьмите содержимое вашего каталога сборки в вашем приложении react и поместите эти файлы на свой веб-сервер. Это должно обеспечить вам 90% пути (обратите внимание на страницу по умолчанию, которая отображается).

Комментарии:

1. почему npx устанавливается каждый раз, когда я запускаю npx serve -s build команду?

2. это работает для меня и с npx, возможно, потому, что приложение создано с помощью команды npx

Ответ №2:

Обслуживание файлов React

Базовый пример:-

 const express = require('express');
const path = require('path');
const app = express();

app.use(express.static(path.join(__dirname, 'build')));

app.get('/', function(req, res) {
  res.sendFile(path.join(__dirname, 'build', 'index.html'));
});

app.listen(9000);
  

Для вашего базового пути в домене служит index.html вы извлекли из процесса сборки.

Если вам нужна дополнительная информация: —https://create-react-app.dev/docs/deployment