сначала: почему azerty регистрируется на консоли, когда я нахожусь на http://localhost:3000/?
console.log("azerty")
находится в области действия файла registration.js
, поэтому будет регистрироваться, как только ваша app.js
потребует этого.
Этой строки здесь достаточно для запуска журналирования консоли: app.use('/register', require('./registration'));
, поскольку модуль требуется, когда Express монтирует его как промежуточное ПО при запуске
секунда: почему я продолжаю получать Cannot POST / register и в инструменте разработчика ошибка 404? И мой код внутри обработчика маршрута не запускается.
Потому что он не смонтирован там, где вы думаете, он смонтирован.
router.post("/register ...
Здесь вы смонтированы на пути /register
, а затем app.use("/register", require("./registration.js"));
здесь вы смонтированы на другом пути /register
. Объединив их вместе, вы получите полный путь как /register/register
(также проверьте опечатку, упомянутую в комментарии)
Таким образом, чтобы установить на localhost:3000/register
, вы должны определить как (Обратите внимание на различия):
router.post("/", (req, res)=>{ ...
// and then
app.use("/register", require("./registration.js"));
// or simply
router.post("/register", (req, res)=>{ ...
// and then
app.use(require("./registration.js"));
наконец: это правильный способ экспорта маршрутов (например, с помощью express.Route () в файле маршрутизации и express () только в главном)?
Да, это прекрасно. Но имейте в виду путь монтирования.