【问题标题】:Cannot figure out how to reach to a js file无法弄清楚如何访问 js 文件
【发布时间】:2018-08-15 15:42:38
【问题描述】:

我是 web 开发的新手,我正在尝试使用 express 的 node.js。

我的目录结构如下:

第一个应用
----node_modules
----公开
--------脚本
------------additems.js
----观看次数
--------home.ejs
----app.js

粗体是文件夹,斜体是文件。

这是文件 additem.js:

console.log("js connected");
alert("test");

这是 home.ejs 文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Test Node</title>
</head>

<body>

<h1>Dynamic Page</h1>
<p></p>

<ol id='olist'>Names List</ol>

<script type="text/javascript" src="../public/scripts/additems.js"></script>
<!-- <script type="text/javascript" src="/public/scripts/additems.js"></script>
<script type="text/javascript" src="/scripts/additems.js"></script>
<script type="text/javascript" src="/additems.js"></script>
<script type="text/javascript" src="additems.js"></script>
<script type="text/javascript" src="public/scripts/additems.js"></script> -->

<p>After Script tag</p>

</body>
</html>

这是 app.js 文件:

var express = require('express');
var app = express();

console.log("Server has been started!");

//app.use(express.static(__dirname + "/public"));

app.get("/", function(req,res){
    //res.send("Home Page");
     res.render("home.ejs");

 })

我可以看到服务器可以运行并显示home.ejs,但没有迹象表明additem.js甚至可以触摸。

我错过了什么?

注意:我尝试了不同的脚本路径,并在 app.js 中尝试了 app.use,但没有成功,我还花了相当多的时间在网上搜索,发现类似的示例似乎没有问题。

输出:

控制台: 服务器已启动!

浏览器:(不显示警报

更新 1: 我尝试了../,但它也不起作用。在 chrome 控制台中,我可以看到这个错误: (X) Failed to load resource: the server responded with a status of 404 (Not Found) 但在添加 ..\ 之后,错误是: (X) GET http://localhost:3000/public/scripts/additems.js net::ERR_ABORTED

【问题讨论】:

  • 也许可以试试 '../public/scripts/additems.js',因为 home.ejs 位于公用文件夹下方的文件夹中...使用 ../ 一、../ 向上移动文件夹。 ./ 两个等
  • -首先检查您的公用文件夹是否已经被提供服务,您会在 chrome 控制台/网络选项卡中看到它。第二,如果您的文件被提供,请尝试使用相对路径。
  • 我尝试了` ../ `,但它也不起作用。在 chrome 控制台中我可以看到这个错误:(X)Failed to load resource: the server responded with a status of 404 (Not Found)
  • // app.use(express.static(__dirname + "/public")); 为什么注释掉了?您需要提供这些静态文件。

标签: javascript node.js express path web-deployment


【解决方案1】:

从公共目录提供静态文件:

app.use(express.static(__dirname + "public"));

然后,public 现在将成为从浏览器访问这些文件时的根目录。

换句话说,public 将是 /

所以要访问additems.js

<script type="text/javascript" src='/scripts/additems.js'></script>

【讨论】:

  • 我很确定,我首先尝试过这个。但似乎还有一些其他错误阻止了文件被处理。但至少现在达到了。但是,我想知道为什么没有 app.use 就无法工作?
  • 因为app.use(express.static(__dirname + "public")); 明确地使浏览您网站的任何人都可以访问该目录中的任何文件。您可以控制要在 Web 应用程序上公开访问的内容。在home.ejs 中,您正在尝试访问 express 未提供的资源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-10
  • 2016-07-07
  • 1970-01-01
  • 2014-12-18
  • 1970-01-01
  • 1970-01-01
  • 2022-12-18
相关资源
最近更新 更多