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

如何在EJS模板中引入依赖包?附报错代码求助

如何在EJS模板中正确引入依赖包并解决你的错误

兄弟,我来帮你搞定这个问题!首先看你代码里的明显错误——你把require写成requires了,多了个s,这肯定会触发报错的。不过就算改过来,其实也不推荐在EJS模板里直接用require加载依赖,原因有这些:

  • EJS模板的核心职责是展示数据/页面逻辑,把模块加载的逻辑放在模板里会让代码耦合度变高,不利于维护;
  • 如果你的EJS模板是在浏览器端渲染的(虽然EJS主打服务端渲染,但也有前端编译的场景),浏览器环境根本没有require这个Node.js专属的函数,必然会报错;
  • 直接在模板里加载模块也存在一定的安全风险,比如不小心暴露了服务器端的文件系统操作权限。

正确的做法:在服务端代码中加载依赖,再传递给模板

以Express框架为例(这是EJS最常用的搭配),我们应该在Node.js的服务器代码里先引入需要的依赖,处理好数据后再把数据(或者必要的方法)传给EJS模板:

1. 服务器端代码(比如app.js)

const express = require('express');
const fs = require('fs'); // 先在这里加载fs模块
const app = express();

// 设置EJS为模板引擎
app.set('view engine', 'ejs');

app.get('/', (req, res) => {
  // 用fs完成你需要的操作,比如读取文件
  const demoFileContent = fs.readFileSync('./demo.txt', 'utf8');
  
  // 把处理好的数据传递给EJS模板
  res.render('index', { fileContent: demoFileContent });
});

app.listen(3000, () => {
  console.log('服务器运行在http://localhost:3000');
});

2. EJS模板代码(比如views/index.ejs)

直接使用服务器传过来的数据即可,不用再加载模块:

<h1>文件内容展示</h1>
<p><%= fileContent %></p>

特殊场景:非要在模板里用模块(不推荐)

如果你因为某些特殊需求,必须在服务端渲染的EJS模板里直接加载模块,那先修正拼写错误,把requires改成require:

<% const fs = require('fs'); %>
<% const content = fs.readFileSync('./demo.txt', 'utf8'); %>
<p><%= content %></p>

但再次强调,这种写法违背了模板与业务逻辑分离的原则,除非万不得已,否则不建议这么做。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:01:49