如何为目录中的每个文件创建元素| Javascript | NodeJS | EJS

问题描述 投票:0回答:1

我希望能够使用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文件添加到目录中并执行转换,以防更改方法的任何内容。

最良好的祝愿,凯文

javascript node.js ejs
1个回答
2
投票

.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>
<% }); %>
© www.soinside.com 2019 - 2024. All rights reserved.