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

Node.js+Express+EJS服务器部署后JSON文本渲染缺失问题求助

问题排查:Node.js+Express+EJS部署后页面主体文本缺失

项目背景

基于Node.js、Express.js和EJS开发多语言网站,计划通过请求URL加载对应语言的JSON文件渲染页面文本。本地运行一切正常,但部署到正式服务器后出现异常。

代码结构

text.json

{
  "text1" : "My first text",
  "text2" : "My second text"
}

layout.ejs

<body>
  <%- include('../path/partials/header.ejs') %>
  <%- body %>
  <%- include('../path/paritals/footer.ejs') %>
</body>

index.ejs

<%= main_text.text1 %>
<%= main_text.text2 %>

header.ejs

<%= header_text.text1 %>
<%= header_text.text2 %>

路由文件 index.js

const text = require('../my_path_to_json_file/text.json')
router.get('/', (req,res) => {
  res.render("index", {main_text: text, header_text: text})
})

问题现象

  • 本地运行预期结果:
My first text
My second text
My first text
My second text
  • 部署后异常结果:
My first text  <-
My second text <- this is the header part of the website
My first text

仅header部分文本完整展示,页面主体仅显示第一个JSON文本,后续内容缺失。

排查原因及优化建议

1. 修复模板路径拼写错误

核心问题:layout.ejs中footer的路径拼写错误,将partials误写为paritals。

  • 本地开发环境(如Windows)对文件路径大小写/拼写容错性高,即使路径错误可能仍能正常渲染;但正式服务器多为Linux系统,路径严格区分拼写和大小写,找不到footer模板文件会触发渲染异常,甚至中断<%- body %>后续内容的输出。
  • 修复方法:将../path/paritals/footer.ejs改为../path/partials/footer.ejs。

2. 验证JSON文件完整性与编码

  • 检查服务器上的text.json是否与本地完全一致,无文件损坏或内容截断;
  • 确保JSON文件采用UTF-8无BOM编码,避免服务器解析JSON时出现异常。

3. 开启渲染调试排查

  • 在Express中开启EJS调试模式,查看渲染过程中的错误日志:
app.set('view options', { debug: true });
  • 在路由中添加日志输出,确认服务器加载的JSON数据完整:
router.get('/', (req,res) => {
  console.log('Loaded JSON:', text); // 查看服务器端JSON内容
  res.render("index", {main_text: text, header_text: text})
})

4. 规范模板渲染语法

为避免文本渲染时的格式问题,建议在EJS模板中添加HTML标签明确结构,例如:

<!-- index.ejs 修改后 -->
<p><%= main_text.text1 %></p>
<p><%= main_text.text2 %></p>

5. 清除服务缓存

正式服务器可能缓存了旧的模板文件或JSON数据,重启Express服务或清除服务器缓存后重新测试。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:28:27