Node.js通过Nginx在Ubuntu运行时无法查找EJS视图求助
问题解决方法
核心原因
systemd管理服务时,默认工作目录并非你的项目根目录,导致Express默认的views目录被解析为系统根目录下的/views(而非项目内的./views),因此找不到视图文件。
解决方案
1. 显式指定views目录路径(推荐)
修改Express代码,手动设置views目录的绝对路径,摆脱对默认工作目录的依赖:
let express = require('express'); let app = express(); app.use(express.static(__dirname + '/public')); app.set('view engine', 'ejs'); // 新增该行,明确指定views目录的绝对路径 app.set('views', __dirname + '/views'); app.get('/', (req, res) => { res.render('index'); }); app.listen(3000, () => console.log('Example app listening'));
2. 配置systemd服务的工作目录
找到你的systemd服务模板文件(通常为/etc/systemd/system/node@.service),添加WorkingDirectory字段指定项目根目录:
[Unit] Description=Node.js Service for %I [Service] Type=simple User=your-user WorkingDirectory=/path/to/your/project # 替换为你的项目绝对路径 ExecStart=/usr/bin/node index.js Restart=always [Install] WantedBy=multi-user.target
3. 重新加载配置并重启服务
执行以下命令使修改后的配置生效:
systemctl daemon-reload systemctl restart node@Node_1C
内容的提问来源于stack exchange,提问作者Aleksandr Silin
相关产品推荐
相关产品推荐

