Javascript 在ejs模板中使用嵌入式js加载静态文本文件

Javascript 在ejs模板中使用嵌入式js加载静态文本文件,javascript,html,node.js,ejs,embedded-javascript,Javascript,Html,Node.js,Ejs,Embedded Javascript,我目前正在使用ejs视图模板开发nodejs应用程序。我试图通过模板中嵌入的js调用存储在文本文件中的大量文本。以下是当前模板的代码 <!DOCTYPE html> <html> <head> <link href="/assets/styles/index.css", rel="stylesheet", type="text/css"> </head> <body>

我目前正在使用ejs视图模板开发nodejs应用程序。我试图通过模板中嵌入的js调用存储在文本文件中的大量文本。以下是当前模板的代码

<!DOCTYPE html>
<html>
    <head>
        <link href="/assets/styles/index.css", rel="stylesheet", type="text/css">
    </head>
    <body>
        <% var name = 'A Tale of Two Star Crossed Idiots: Act ' + act%>
        <%include partial/header.ejs%>
        <p>
            //the following line is completely wrong
            <%= require('fs').readFileSync('.'+__dirname + '/assets/text/romeo and juliet/act' + act + '.txt') %>
        </p>
    </body>
</html>


//下面这句话完全错了

这就是我运行它时发生的错误

require is not defined
at eval (eval at compile (D:\Web Projects\NodeJs Test\node_modules\ejs\lib\ejs.js:618:12), <anonymous>:30:7)
at returnedFn (D:\Web Projects\NodeJs Test\node_modules\ejs\lib\ejs.js:653:17)
at tryHandleCache (D:\Web Projects\NodeJs Test\node_modules\ejs\lib\ejs.js:251:36)
at View.exports.renderFile [as engine] (D:\Web Projects\NodeJs Test\node_modules\ejs\lib\ejs.js:482:10)
at View.render (D:\Web Projects\NodeJs Test\node_modules\express\lib\view.js:135:8)
at tryRender (D:\Web Projects\NodeJs Test\node_modules\express\lib\application.js:640:10)
at Function.render (D:\Web Projects\NodeJs Test\node_modules\express\lib\application.js:592:3)
at ServerResponse.render (D:\Web Projects\NodeJs Test\node_modules\express\lib\response.js:1008:7)
at D:\Web Projects\NodeJs Test\index.js:14:9
at Layer.handle [as handle_request] (D:\Web Projects\NodeJs Test\node_modules\express\lib\router\layer.js:95:5)
require未定义
评估时(编译时评估)(D:\Web Projects\NodeJs Test\node\u modules\ejs\lib\ejs.js:618:12),:30:7)
在returnedFn(D:\Web Projects\NodeJs Test\node_modules\ejs\lib\ejs.js:653:17)
在tryHandleCache(D:\Web Projects\NodeJs Test\node\u modules\ejs\lib\ejs.js:251:36)
在View.exports.renderFile[作为引擎](D:\Web Projects\NodeJs Test\node\u modules\ejs\lib\ejs.js:482:10)
在View.render(D:\Web Projects\NodeJs Test\node\u modules\express\lib\View.js:135:8)
在tryRender(D:\Web Projects\NodeJs Test\node\u modules\express\lib\application.js:640:10)
位于Function.render(D:\Web Projects\NodeJs Test\node\u modules\express\lib\application.js:592:3)
在ServerResponse.render(D:\Web Projects\NodeJs Test\node\u modules\express\lib\response.js:1008:7)
位于D:\Web Projects\NodeJs Test\index.js:14:9
在Layer.handle[作为handle\u请求](D:\Web Projects\NodeJs Test\node\u modules\express\lib\router\Layer.js:95:5)
有人知道如何正确地做到这一点吗?
谢谢。

不幸的是,在ejs中需要模块是不可能的。您也可以尝试在express部件中加载该文件

//Node.JS后端
应用程序获取(“/foo)”,(请求,请求)=>{
const act=req.query.act;//充当URL中的查询参数
fs.readFile('.+'.\uu dirname+'/assets/text/romeo and juliet/act'+act+'.txt',utf8',(错误,数据)=>{
//添加错误处理(如果(错误))
res.render(“文件”{bar:data});
});
});