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

Plesk部署node.js站点时ejs文件无法显示如何解决

Plesk部署Node.js+EJS站点无法正常显示EJS内容的修复方案

以下是按出现概率排序的可落地修复方式,逐一排查基本能覆盖90%以上的同类问题:

  • 校验Node应用启动配置:这是最高发的问题原因。进入Plesk对应站点的「Node.js」设置页,确认应用启动文件路径填写正确(和你本地启动服务的入口一致,通常是app.js、server.js或express生成的bin/www文件),同时选择和本地开发一致的Node.js版本,保存后点击「重启应用」。如果没正确配置启动入口,Plesk不会启动Node服务,会直接把.ejs文件当普通静态文件返回源码或者触发下载。
  • 补全项目依赖:不要直接上传本地残缺的node_modules目录,在Plesk的Node.js设置页点击「NPM安装」,或者打开项目根目录的内置终端执行npm install,确认ejs包和其他项目依赖都完整安装,避免因依赖缺失导致渲染逻辑失效。
  • 修正EJS引擎配置:检查Node服务代码里的EJS配置是否适配线上路径,标准配置参考:
const path = require('path');
const express = require('express');
const app = express();

// 必须明确指定渲染引擎为ejs
app.set('view engine', 'ejs');
// views路径要指向线上存放ejs模板的实际目录,Plesk线上项目根目录通常为/var/www/vhosts/你的绑定域名/项目目录
app.set('views', path.join(__dirname, 'views'));

注意不要把存放ejs模板的views目录挂在express静态资源目录下,避免静态资源中间件直接返回模板源码,拦截正常的渲染路由。

  • 调整端口监听逻辑:不要在代码里硬编码3000、8080这类固定端口,Plesk会自动通过环境变量分配转发端口,监听配置必须写成:
app.listen(process.env.PORT, () => {
  // 服务启动逻辑
});

硬编码端口会导致Plesk的反向代理无法把请求转发到Node服务,直接触发静态文件解析逻辑。

  • 修复文件权限:在Plesk文件管理器选中项目根目录,右键选择「修复权限」,保证运行Node服务的系统用户对所有ejs模板文件、静态资源文件有读取权限,避免因权限不足导致服务读取模板失败返回500错误。
  • 调整Web服务器转发规则:进入Plesk对应站点的「Apache & Nginx设置」,确认没有针对.ejs后缀配置单独的静态解析规则,所有站点请求都正常转发到Node服务,避免Nginx/Apache提前拦截请求返回ejs源码。
  • 查看运行日志定位特殊问题:在Plesk的Node.js设置页可以直接查看应用实时运行日志,如果是ejs语法错误、路由匹配失败、模板路径拼写错误这类个性化问题,日志里会输出明确的报错信息,根据报错调整对应代码即可。

内容的提问来源于stack exchange,提问作者user19441949

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 16:51:25