index. js не найдено в приложении React с использованием Express (Node.js) - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь использовать свой собственный сервер express для создания приложения React, но получаю статус 404 «Не найден» для моего index.js, имеющего сценарий React js.

Структура папок, которую я использую, следующая

server.js
+public
| index.html
|
__+ src
   |
   __ index.js

(index. html находится в папке publi c, index. js находится в папке sr c)

Итак, в моем server.js у меня есть:

// Built-in Node.js modules
let fs = require('fs');
let path = require('path');

// Third-party Node.js modules
let express = require('express');


// Express App
let public_dir = path.join(__dirname, 'public');

// let port = 80; // production port
let port = 8000; // test/debug port

let app = express();
app.use(express.static(public_dir));

app.listen(port, () => {
    console.log("Now listening on port " + port);
});

, а в моем index.html я вызываю в голове тег:

<script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>
<script src="./src/index.js"></script>

В конце , когда я запускаю сервер. js Я получаю следующую ошибку:

Failed to load resource: the server responded with a status of 404 (Not Found)

Если вам может понадобиться это мой индекс. js

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';

ReactDOM.render(
  <React.StrictMode>

    <App />

  </React.StrictMode>,
  document.getElementById('root')
);

// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
serviceWorker.unregister();

Спасибо !

1 Ответ

1 голос
/ 29 мая 2020

Сервер node.js не похож на сервер apache, на который вы загружаете индексный файл, и он автоматически отображает его, вам нужно указать node.js, что делать на маршруте /

// Built-in Node.js modules
let fs = require('fs');
let path = require('path');

// Third-party Node.js modules
let express = require('express');

// Express App
let public_dir = path.join(__dirname, 'public');

// let port = 80; // production port
let port = 8000; // test/debug port

let app = express();
app.use(express.static(public_dir));

//response with index file

app.get('/', function (req, res) {
   res.sendFile( __dirname + "/" + "index.html" );
})
app.listen(port, () => {
    console.log("Now listening on port " + port);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...