Ich beginne von diesem ausgezeichneten Tutorial: https://www.fullstackreact.com/articles/using-create-react-app-with-a-server/ und versuchen, es durch Hinzufügen einer neuen Seite zu erweitern, um durch eine neue Route zu dienen. Doch nach Stunden herumschlagen ich zu realisieren, dass irgendwie schaffen reagieren-App einige seltsame Magie tut (wie mentioned in their docs here):Webpack irgendwie umgeht Express-Routing vollständig
`create-react-app` configures a Webpack development server to run on `localhost:3000`.
This development server will bundle all static assets located under `client/src/`.
All requests to `localhost:3000` will serve `client/index.html` which will include Webpack's `bundle.js`.
Der Schlüssel Zitat ist „Alle Anfragen an localhost:3000
client/index.html
dienen“. Ich habe keine Ahnung, wie das passiert. Also auch wenn ich mess around mit routes/index.js
:
app.route('/')
.get(function (req, res) {
res.sendFile(bipath.join(__dirname, '../public', 'THISCANBEANYRANDOMFILENAME.html'))
});
spielt es keine Rolle, weil webpack irgendwie localhost:3000
leitet sowieso index.html. Wo und wie macht es das? Unterm Strich Ich versuche, meine Routen zu ändern, um eine neue HTML-Datei zu dienen und in alle möglichen Filepath Fragen leite (ja, auch wenn ich require('path')
oder sendFile(...,{root: __dirname})
.)
Was genau ist hier los und Sie können Gib mir irgendwelche Hinweise, um mir zu helfen?
Edit: das könnte sowohl von babel als auch von webpack sein - ich weiß nicht genau wo Babel die Hände abhebt und wo das Webpack startet.
Hier sind die Dateien auf github, wenn Sie weitere Informationen benötigen: https://github.com/sw-yx/fcc-nightlife – swyx
Alle Babel tut ist transpile. Ich verstehe nicht, warum du denkst, dass das Erreichen des Root-Endpunkts nicht den Pfad erreicht - das ist die 'index.html', von der wir reden, oder? –
ja. Ich kann mir selbst beweisen, dass der Root-Endpunkt nicht auf den Pfad trifft, weil ich absichtlich das sendFile bearbeitet habe, um eine nicht existierende Datei zu senden - "indextest.html" im obigen Screenshot, und wenn ich es in meinem Browser anklicke, diente es INDEX.HTML . So wurde es eindeutig irgendwo vom Webpack-Dev-Server abgefangen. Was ist schwarze Magie? Ich sehe nirgendwo einen Webpack-Dev-Server-Konfigurator (ich habe den GitHub gepostet), also habe ich keine Ahnung, wie es dieses Abfangen macht. – swyx