簡體   English   中英

無法在視圖目錄中查找視圖“index.pug”

[英]Failed to lookup view "index.pug" in views directory

我正在嘗試使用 nodejs 服務器渲染 index.pug,但它不起作用。 index.pug 位於子目錄/public/views中。 這是代碼:

import express from 'express';
const app = express();
import path from 'path';
import { sequelize } from './db/db.js';

// SERVER CONFIGURATION
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Listening at ${PORT}`);
  sequelize.sync({ force: false })
    .then(() => console.log('Database Connected!'))
    .catch(err => console.log(err));
});

// VIEW SETTINGS
app.use('/public', express.static(import.meta.url + "/public"));
app.set("view engine", "pug");
// app.engine('html', require('ejs').renderFile);
app.set('views', path.join(import.meta.url, "../public/views"));

// BODYPARSER
app.use(express.urlencoded({ extended: false }));
app.use(express.json());


const routerHome = express.Router();

routerHome.get("/", (req, res) => {
  res.render("index.pug");
});

app.use(routerHome);

不能工作的一件事是,當我執行 import.meta.url 時,它會導入 all_directories/app.js,然后可能是express.static(import.meta.url + "/public")將是all_directories/app.js/public不存在。

如果有人知道發生了什么,我將非常感謝您幫助我。

我得到的錯誤如下:

錯誤:無法在視圖目錄“file:/home/marc/Disco/Projects/Gym/public/views”中查找視圖“index.pug”

在錯誤消息中: Failed to lookup view "index.pug" in views directory "file:/home/marc/Disco/Projects/Gym/public/views" ,該目錄以file:/開頭,這很奇怪,正確的路徑應該是/home/marc/Disco/Projects/Gym/public/views

我認為你不應該混淆文件 URL 和文件路徑。 如果您在/public/views子目錄中有視圖文件,在 / /public子目錄中有 static 文件,則視圖配置應更改為:

// VIEW SETTINGS
app.use('/public', express.static(import.meta.url + "/public"));
app.set("view engine", "pug");
// app.engine('html', require('ejs').renderFile);
app.set('views', path.join(import.meta.url, "../public/views"));

至:

// VIEW SETTINGS
app.use('/public', express.static("public")); // serve static files in public subdirectory under /public virtual path
app.set("view engine", "pug");
app.set('views', path.join(__dirname, "./public/views")); // use pug templates file in /public/views subdirectory

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM