Nodejs Express - public文件夹内的子文件夹无法正常工作
Nodejs Express - public文件夹内的子文件夹无法正常工作
我使用express创建了一个nodejs应用程序来提供我的个人作品集和项目。当访问根目录“/”时,我的个人作品集可以正常工作,但是当我像“/FootballScores”和“/FacebookGrabber”这样提供我的项目时,一个项目只能部分工作(意味着所有的angular文件成功加载,但是什么也不显示),另一个项目无法加载,并显示错误信息:
"Error: Cannot find module 'html'"
另外,我已经安装了所有的npm包。这是app.js的代码:
var express = require("express"), app = express(), bodyParser = require("body-parser"), nodemailer = require("nodemailer"), xoauth2 = require("xoauth2"), path = require("path"); app.use(express.static(path.join(__dirname, "public"))); app.use(bodyParser.urlencoded({extended: true})); app.get("/", function(req, res){ res.render("index.html"); }); app.get("/FacebookGrabber", function(req, res){ res.render("FacebookGrabber/index.html"); }); app.get("/FootballScores", function(req, res){ res.render("FootballScores/index.html"); }); app.listen(3000, process.env.IP, function(){ console.log("Portfolio Server Started!"); });
我认为问题可能是由于不正确的public路径导致的...我该怎么办才能使我的项目/FootballScores和/FacebookGrabber正确加载?
在Node.js Express中,有一个问题是在public文件夹中的子文件夹无法正常工作。这篇文章将探讨这个问题的原因以及解决方法。
如果你尝试在res.render
调用之前设置视图引擎为html,问题可能会得到解决。你可以使用以下代码设置视图引擎:
// 视图引擎 app.set('view engine', 'html');
这样做的原因是,当你使用Express框架时,默认的视图引擎是EJS或Pug等。这些引擎通常不支持在public文件夹的子文件夹中渲染HTML文件。因此,你需要明确告诉Express使用HTML作为视图引擎。
通过设置视图引擎为html,Express将能够正确识别并渲染public文件夹中的子文件夹中的HTML文件。这样,你就可以在public文件夹的子文件夹中正常使用文件。
希望这篇文章能帮助你解决Node.js Express中public文件夹中子文件夹无法工作的问题。如果你遇到类似的问题,请尝试设置视图引擎为html,这可能会解决你的问题。