我希望能够使用nodeJS应用程序中的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
文件中变量的可见性,除非您将它们与您的 View 路径一起显式发送到渲染函数。想要渲染..
以此示例为指导:
res.render('index', { fs: fs });
编辑: 如果您正在编写浏览器应用程序,而不是电子或其他技术......
您需要记住 .ejs
模板在另一端编译为 Javascript,因此将 fs 模块扔到模板上并不是一个明智的主意(因为如果在模板,访问驱动器信息客户端将不起作用)。
因此,我建议您在服务器上加载此数据(如果您希望从服务器而不是客户端检索目录数据)。
这是一个示例,在您的 Controller 中执行以下操作:
fs.readdir(dirname, (err, files) => {
res.render('index', { files: files });
});
现在将您的 View 修改为:
<% files.forEach(file => { %>
<p> test</p>
<% }); %>
关于javascript - 如何为目录中的每个文件创建元素 | Javascript | NodeJS |埃杰斯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59643569/