为什么不是我的html文件加载express.static?

文件结构:

- simulated-selves - client - directives - Statement - statement.directive.html - lib - server - app.js - index.html 

我有:

 app.use(express.static('client')); app.use(express.static('lib')); 

我在index.html中加载的资源正在正确加载。

 <link rel='stylesheet' href='assets/app.css' /> <script src='angular.js'></script> <script src='app.js'></script> <script src='controllers/main.controller.js'></script> <script src='directives/Statement/statement.directive.js'></script> <script src='providers/statement.factory.js'></script> 

但是我得到这个错误:

在这里输入图像描述

为什么是这样? statement.directive.html嵌套在express.static正在处理的client文件夹中。 我知道它不是直接嵌套在client下面,但是我的其他一些资源也没有被正确加载。 我看到的唯一区别是使用<script> / <link/>与HTTP请求。 如果这是问题,我不知道如何绕过它,而不是为每个资产设置一个端点,这似乎是非常过分的。

旁边的问题:通过express.static服务lib文件夹是不好的? 我不这么认为,因为他们都是公开的。 我不知道如果没有为每个文件夹写明确的GET端点,我还能如何提供文件夹中的文件。

编辑:我的png文件也没有被送达。 他们在client > assets > images

考虑: app.use(express.static('client'));

第一部分是用一个参数调用app.use 。 这基本上意味着传递给它的callback参数将被执行每个请求到应用程序。

第二部分是它通过express.static('client') 。 基本上说:

当我们收到/foo/bar.ext的请求时,我们将检查/client/foo/bar.ext存在。 如果是这样,我们将提供服务。 如果没有,我们不会。

我碰巧一直在提出要求

 /client/directives/Statement/statement.directive.html 

所以它会看看是否

 /client/client/directives/Statement/statement.directive.html 

存在,如果是的话,它会服务。 但它显然不存在。 我通过提出请求来解决问题

 /directives/Statement/statement.directive.html 

至于用express.static服务库:

不,用静态服务器中间件服务库也不错

– 谢夫