'require' 不适用于 index.html 运行 node.js

'require' is not available to index.html running on node.js

我有一个服务器应用程序使用它来显示主页

app.get("/", (req, res) => {
  res.sendFile(path.join(__dirname, "/index.html"));
});

我在 index.html 中的 js 文件的头部有这些行

    <script src="/public/js/controller.js" type="module"></script>
    <script src="/public/js/main.js" type="module"></script>

main.js 用于前端 js,而控制器用于后端,它导入 model.js 和 model.js 使用 fs 使用此行

const fs = require("fs");

但是当我尝试使用节点服务器 http://localhost:3000 加载 index.html 时,出现此错误

model.js:2 Uncaught ReferenceError: require is not defined
    at model.js:2

所以我添加了 require.js 库,然后像这样使用它

    <script src="/public/js/require.js" ></script>

然后我仍然得到这个错误

require.js:108 Uncaught Error: Module name "fs" has not been loaded yet for context: _. Use require([])
https://requirejs.org/docs/errors.html#notloaded
    at makeError (require.js:108)
    at Object.s [as require] (require.js:947)
    at requirejs (require.js:134)
    at model.js:2

有人可以请教一下,应该怎么做才能使这项工作正常进行?我在这上面停留了超过 2 天,我对 node.js 和这个 'require' 还很陌生.. 但我知道这是 node.js.[=24= 的一个非常重要的部分]

所以我想澄清一些 advise/help 不使用捆绑器和 运行 直接来自节点服务器的 html 页面必须处理的内容这个..

只是为了让我清楚 'this' 的意思,我想做的就是获取一个文件夹名称列表,我想将其用作前面的导航菜单(li 项目)-结束..我在node.js上使用这个命令来获取数组..

fs.readdir('./data/')

我需要在我的 index.html 中包含这个数组,它与 node.js 上的 运行 相同 server/folder/application..

我假设如果 node.js 正在显示一个 html 文件(带有 app.get)我将能够以这种方式使用 fs 命令..我是吗错误的?如果是这样,我需要做什么才能使用 readdir 并让数组在前端显示为菜单?

您可能将 server.js 作为 ES6 模块,这是一件好事,因为我自己花了一个小时来设置它。

你可以做到 但我做到了 import { promises as fs } from "fs"; 因为我喜欢我的 fs 调用 async.

给人一种 python 的感觉。

“fs”模块是 NodeJS 中的内置模块,可让您使用文件系统。它在客户端不可用(假设人们可以访问您的网页并操纵您的文件系统!!)。

您要做的是 get a list of folder names that you want use as navigation menu (li items) on the front-end。为此,您可以使用“fs”模块在服务器端获取文件夹名称列表,然后使用模板引擎渲染包含数据的 HTML 文件。

对于NodeJS,有一些流行的模板引擎:EJS, pug, nunjucks.....