Ошибка с переменной __dirname в nodejs с использованием express - PullRequest
0 голосов
/ 30 января 2019

У меня ошибка с каталогами и путями.

Смотри, это мой файл конфигурации сервера:

const path = require("path");
const exphbs = require("express-handlebars");

const morgan = require("morgan");
const multer = require("multer");
const express = require("express");
const erroHandler = require("errorhandler");
const routes = require("../routes/index");

module.exports = app => {
  app.set("port", process.env.PORT || 3000);
  console.log("0. " + __dirname);
  let parent = path.normalize(__dirname + "/src/");
  console.log("1. " + parent);
  app.set('views', path.join(__dirname, '../views'));
  let d = app.get("views");
  console.log("2. " + d);
   app.engine(
    ".hbs",
     exphbs({
         extName: ".hbs",
         defaultLayout: "main",
         partialsDir: [ path.join(__dirname, '../views') ],
         layoutDir: path.join(__dirname, '../views', 'layouts'),
         helpers: require("../helpers")
    })
 );
  app.set("view engine", ".hbs");

  // middlewares
  app.use(morgan("dev"));
  app.use(
    multer({ dest: path.join(__dirname, "../public/upload/temp") }).single(
      "image"
    )
  );
  app.use(express.urlencoded({ extended: false }));
  app.use(express.json());

  //routes
  routes(app);

  // static files
  app.use("/public", express.static(path.join(__dirname, "../public")));

  // errorhandlers
  if ("development" === app.get("env")) {
    app.use(erroHandler);
  }

  return app;
};

И я получаю ошибку вроде этого:

Я знаю, что это не расширение, а маршрут.Я покажу вам мои каталоги:

enter image description here

Я получаю эту ошибку:

Ошибка: ENOENT: такого файла нетили каталог, откройте 'C: \ Users \ Diesan Romero \ Desktop \ redsocial \ views \ layouts \ main.handlebars'

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Ваш путь к вашему макету неправильный, это то, что говорит вам сообщение об ошибке при просмотре структуры вашей папки \Users\Diesan Romero\Desktop\redsocial\views\layouts\main.handlebars должно быть так: \Users\Diesan Romero\Desktop\redsocial\src\views\layouts\main.handlebars.Вам не хватает каталога src между каталогами redsocial и views.

0 голосов
/ 30 января 2019

Просто объявите папку представлений следующим образом

app.set('views', path.join(__dirname, '../views'));

И измените app.engine следующим образом

  app.engine(
    ".hbs",
     exphbs({
         extName: ".hbs",
         defaultLayout: "main",
         partialsDir: [ path.join(__dirname, '../views') ]
         layoutDir: path.join(__dirname, '../views', 'layouts'),
         helpers: require("../helpers")
    })
 );

Я выдал ту же ошибку на своей стороне, а затем исправил ее, надеюсь, на 90 процентовэто сделает свое дело

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...