为什么不是我的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
服务库:
不,用静态服务器中间件服务库也不错
– 谢夫