如何将外部javascript文件使用到ejs文件中

如何将外部javascript文件使用到ejs文件中,javascript,node.js,express,ejs,Javascript,Node.js,Express,Ejs,我在一个新的门户网站工作。到目前为止,使用express和node.js,我有一个服务器和一些ejs文件 我的站点的主体结构如下所示: - node modules - public --javascript ---myScript.js -views --pages ---index.ejs ---about.ejs --partials ---footer.ejs

我在一个新的门户网站工作。到目前为止,使用express和node.js,我有一个服务器和一些ejs文件

我的站点的主体结构如下所示:

   - node modules
   - public
      --javascript
         ---myScript.js
   -views
      --pages
        ---index.ejs
        ---about.ejs
      --partials
        ---footer.ejs
        ---head.ejs
        ---header.ejs
    package.json
    server.js
server.js

和index.ejs

我正在尝试调用head.ejs(或index.ejs)中的外部js


MyPortal
正文{padding top:50px;}
但我(在控制台中)遇到了这个错误

为具有源的加载失败”http://localhost:8080/pubic/javascript/myScript.js”.

知道为什么会发生这种情况以及如何解决它吗?

因为您正在尝试加载客户端JavaScript,所以使用EJS的事实是无关紧要的。模板中只需要一个标准的HTML脚本元素,您就可以使用它了

但是,您确实需要提供一个URL(带有src属性),web浏览器可以使用该URL获取脚本……而您的脚本没有URL

您正在获取源代码为的加载失败的消息。“http://localhost:8080/pubic/javascript/myScript.js“,因为这是一个404错误

您应该使用提供JS文件的URL

app.use("/public", express.static('public'))

将其添加到server.js文件中, 应用程序使用(express.static(uu dirname+“/public”)


要将js文件与您的ejs文件链接起来,

public
输入错误
public
是的,我只是显示它…我将它更改为“public”,但问题仍然存在。您能否在浏览器中打开脚本的url,看看它是否显示任何内容?
type=“text/javascript”
不应在HTML 5中使用。它除了允许您输入错误和打断脚本之外没有其他用途。niko尝试添加此
app.use(express.static(path.join(u dirname,'public'));
在设置视图引擎后。您还需要路径模块
var path=require('path'));
我理解你的意思。但是即使在我的server.js文件中使用“app.use(“/public”,express.static('public')”),我仍然看到脚本不能被删除的错误loaded@NikosKalantas看起来像是在使用jQuery。如果是这样,请在html中链接jQuery cdn(最好在正文末尾)以及jquery链接标记之后的脚本标记(重要)
<html lang="en">
<head>
<% include ../partials/head %>
</head>
<body class="container">
<header>
    <% include ../partials/header %>
</header>
<main>
<div class="jumbotron">
    <h1>MyPortal</h1>
        <button>Press</button>
    <% var test = 101; %>
    </div>
</main>
    <footer>
        <% include ../partials/footer %>
    </footer>
</body>
</html>
$(function() {
  $("button").on("click", function () {
  console.log("button pressed");
   });
  });
<!-- views/partials/head.ejs -->
<meta charset="UTF-8">
<title>MyPortal</title>
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<style>body    { padding-top:50px; } </style>

<script type="text/javascript" src="/pubic/javascript/myScript.js"></script>
Loading failed for the <script> with source “http://localhost:8080/pubic/javascript/myScript.js”.
app.use("/public", express.static('public'))