为什么不能Node.jsfind我的文件

我正在使用Node.js作为我的服务器,我有一些麻烦服务我的JS和CSS文件。 出于某种原因, index.html似乎无法find它们。 当我加载我的浏览器,我得到这个错误:

在这里输入图像说明

我的文件系统结构:

 public css main.css normalize.css js main.js upload.js plugins.js views index.html server.js 

HTML

 <head> <meta charset="utf-8"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <title></title> <meta name="description" content=""> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="manifest" href="../public/site.webmanifest"> <link rel="apple-touch-icon" href="../public/icon.png"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"> <link rel="stylesheet" href="../public/css/normalize.css"> <link rel="stylesheet" href="../public/css/main.css"> <script src="../public/js/vendor/modernizr-3.5.0.min.js"></script> <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"> </script> <script src="../public/js/plugins.js"></script> <script src="../public/js/main.js"></script> <script src="../public/js/upload.js"></script> </head> 

server.js

 var express = require("express"); var app = express(); var path = require("path"); app.use(express.static(path.join(__dirname, 'public'))); app.get('/', function(req, res){ res.sendFile(path.join(__dirname, 'views/index.html')); }); 

我的猜测是我在server.js错误地提供了公共文件夹。 当我尝试直接在浏览器上访问该文件夹时,我无法获取/公开 。 任何专家都可以帮助我吗?

您加载静态资产的方式是错误的。 Express查找相对于静态目录的文件,所以静态目录的名称不应该是URL的一部分。

如果你使用app.use(express.static(path.join(__dirname, 'public'))); ,那么你可以在http:// host:port / css / *或http:// host:port / js / *加载静态资源。

如果你使用app.use('/public', express.static(path.join(__dirname, 'public'))); ,那么你可以从公共目录加载/ publicpath的静态资产。 例如, http:// host:port / public / css / *