node.js - 无法在视图目录中查找视图“index.pug”
问题描述
我正在尝试使用 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
,则视图配置应更改为:
// 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
推荐阅读
- php - 每次尝试访问管理仪表板页面时,我都会被重定向到登录页面
- excel - 如果单元格不为空白,并且与相邻单元格匹配,则计数
- html - 角度禁用容器
- reactjs - 当用户关闭 React Native 应用程序时将大型状态对象存储在异步存储中
- json - 如何从 json 模式中的属性引用特定属性
- r - 在 R {gt} 组标签中使用 HTML
- symfony - 按同一表的相关实体进行的 Doctrine 查询扩展过滤器
- matrix - 如何应用变换矩阵将像素坐标投影到距离未知的 3D 空间中的 2d 层,其中包含单个相机的图像
- database - 死锁发生在 2 个阶段锁定
- python - Pandas 将具有相同列值的行分组并将函数应用于第一行,然后将结果分配给左侧行