EJS 文件不执行 JS 模块脚本

问题描述 投票:0回答:1
我有一个在本地主机上运行的 ejs 文件。我想执行用js导入的其他文件中的函数。在我的 ejs 文件中,我有一个模块脚本标记,只要它没有导入,它就会执行模块脚本标记的 src 中的文件代码。因此,当我的 js 文件中只有一个 console.log 时,它会执行,但一旦我添加导入,它就不会执行任何操作。

这是我的 app.js 文件

// Requirements const express = require("express"); const cors = require("cors"); const path = require("path"); const dotenv = require("dotenv"); dotenv.config({ path: `.env.development` }); require("./src/dataBase/dbConfig.js") const corsOptions = { origin: process.env.ALLOW_ORIGIN }; const app = express(); app.use(cors(corsOptions)); //template engine app.set("view engine", "ejs"); app.set("views", path.join(__dirname, "src/views")); // response handler middleware app.use(require("./src/utils/response")); app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use(express.static(path.join(__dirname, "src/views"))); app.use(require('./src/routes')); app.get("/", (req, res) => { res.render("index"); }); if (process.env.NODE_ENV !== "developing") { app.listen(process.env.PORT, () => { console.log(`🟢 | Server running | http://localhost:${process.env.PORT}/`); }); } else { module.exports = app; }
这是我在 src/views 中的 index.ejs 文件

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script type="module" src="./src//js/handers/fileHandler/loadFiles//loadJs.js"defer></script> <script type="module" src="./src//js/handers/fileHandler/loadFIles/loadCss.js"defer></script> <script type="module" src="./src//js/handers/fileHandler/fileHandler.js"defer></script> <script type="module" src="./src/js/index.js" defer></script> </head> <body> <div class="app"></div> </body> </html>
这是我在 src/views/src/js 中的 index.js 文件

console.log("test") import { loadFiles } from "./handlers/filehandler/fileHandler.js"; loadFiles()
该测试从未被记录。

javascript node.js express module ejs
1个回答
0
投票

import

 它是在 ES6 中导入 js 文件的“新”方式(称为 ES 模块)。您必须在 package.json 中添加 
"type": "module",
,以便节点将使用 ES 模块,这意味着您将能够根据需要使用 
import
 stament。

如果你最终改变了 ES 模块的导入方式,你还必须将所有

require

 语句替换为 
import
 语句。

查看这篇

文章以联系 ES 模块。

© www.soinside.com 2019 - 2024. All rights reserved.