You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 20:32:33