javascript - 如何为目录中的每个文件创建元素 | Javascript | NodeJS |埃杰斯

标签 javascript node.js ejs

我希望能够使用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/

相关文章:

javascript - 如何使用 server.get 从数组中获取值? (JavaScript)

node.js - ejs 2 自定义分隔符

javascript - 在不刷新 iframe 的情况下将内容添加到 div

javascript - 绑定(bind)Kendo网格与数据源不显示数据

node.js - Node Hmac 认证

node.js - Vagrant,为 Node.js 设置机器 - Chef 失败

javascript - GraphQL:在同一查询中使用输入类型及其字段之一

javascript - 幻灯片的 .js 文件中的单词使用 '|' 分隔符奇怪地组织

javascript - 循环查询JSON数据集获取前端输出

javascript - MathQuil API 包含