【问题标题】:Serving static files in express net::ERR_FILE_NOT_FOUND在 express net::ERR_FILE_NOT_FOUND 中提供静态文件
【发布时间】:2020-05-19 17:30:07
【问题描述】:

我的文件夹结构是:

APP
 -public
   main.js
 -views
   index.html
 index.js

我正在尝试提供静态文件以表达服务器,但它无法正常工作。我的 index.js 文件中的代码是:

const express = require('express'),
      app     = express();

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

我也尝试过使用 path.join 语法

在视图文件夹中的 index.html 文件中,我使用 src 标记作为“main.js”

<script type="text/javascript" src="main.js"></script>

我收到错误 net::ERR_FILE_NOT_FOUND。 我还可以看到 src 所指的路径是错误的。 它正在视图目录中查找 main.js 文件,而不是在公共目录中查找。

我看过其他答案。我从理论上理解语法,但无法找到我做错了什么

请指出我的代码中的问题。谢谢

【问题讨论】:

  • 你试过app.use(express.static(__dirname+'../public'));
  • 刚刚试了一下..得到同样的错误
  • 大声笑.. 很抱歉,我认为index.js 文件在另一个目录中。我刚刚检查了他们现在建议这种方法的文档app.use(express.static('public'))
  • 没有问题:)..我也试过了,没用...事实上最好使用绝对路径,这样即使我们从其他地方访问静态文件,路径也是有效的项目目录..我以前做过很多次..不知道这次似乎是什么问题..
  • 嗨..我能够解决这个问题...我刚刚在我的项目目录中添加了 index.html 而没有在任何路线中提供文件..所以在我的路线中我添加了像 res.sendFile('index.html) 一样呈现我的 index.html 文件的代码..它起作用了。

标签: node.js express


【解决方案1】:

这是一个工作示例:

index.js:

const express = require('express');
const path = require('path');
const app = express();
const port = 3000;

app.use(express.static(__dirname + '/public'));
app.get('/', (req, res) => {
  res.sendFile(path.resolve(__dirname, './views/index.html'));
});

app.listen(port, () => console.log(`server is listening on port ${port}`));

./public/main.js:

window.onload = function() {
  console.log('onload');
};

./views/index.html:

<!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="text/javascript" src="main.js"></script>
  </head>
  <body>
    This is template
  </body>
</html>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多