我希望能够使用nodeJS-app中的ejs为目录中的每个文件创建一个
。现在,我认为该方法:
<div class="container">
<% fs.readdir(dirname, (err, files) => { %>
<% files.forEach(file => { %>
<p> test</p>
<% }); %>
<% }); %>
</div>
我收到以下错误:
ReferenceError: /workspace/Web-Dev-Course/filename.ejs:13
11| </p>
12| <div class="container">
>> 13| <% fs.readdir(dirname, (err, files) => { %>
14| <% files.forEach(file => { %>
15| <p> test</p>
16| <% }); %>
fs is not defined
在app.js中,我有
const express = require('express');
const app = express();
const bodyParser = require("body-parser");
const mongoose = require('mongoose');
const fs = require ('fs');
var dirname = './testdir';
并且作为检查,在app.js内,我检查是否可以访问dirname
。 (它可以!)我该如何解决该错误?
稍后,我想将XML文件添加到目录中并执行转换,以防更改方法的任何内容。
最良好的祝愿,凯文
.ejs
文件在.js
文件中不具有变量的可见性,除非您将变量以及要呈现的视图的路径明确发送给render函数。
以该示例为指南:
res.render('index', { fs: fs });
编辑:如果您正在编写浏览器应用程序,而不是电子或其他技术...
[您需要记住,.ejs
模板在另一端可以编译为Javascript,因此将fs模块扔到模板上不是一个明智的主意(因为如果在模板中使用fs模块将无法使用,请访问驱动器信息客户端无法正常工作)。
因此,建议您将此数据加载到服务器上(如果要从不是客户端的服务器中检索目录数据)。
这里是一个示例,在您的控制器中执行以下操作:
fs.readdir(dirname, (err, files) => {
res.render('index', { files: files });
});
现在将视图修改为:
<% files.forEach(file => { %>
<p> test</p>
<% }); %>