文件结构:
- 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
嵌套在client
文件夹中,由express.static
处理。我知道它不是直接嵌套在client
下面,但是我的其他资产都没有正确加载。我看到的唯一区别是使用<script>
/ <link/>
与HTTP请求。如果这就是问题所在,除了为每个资产设置一个端点之外,我不确定如何解决这个问题,这似乎非常过分。
附带问题:通过lib
投放express.static
文件夹是不是很糟糕?我不这么认为,因为它们都是公开访问的。我不知道如果没有为每个文件写入明确的GET端点,我还能如何为该文件夹中的文件提供服务。
编辑:我的png
个文件也没有提供。他们在client > assets > images
下。
答案 0 :(得分:0)
考虑:app.use(express.static('client'));
。
第一部分是使用一个参数调用app.use。这基本上意味着传入其中的回调参数将针对应用程序的每个请求执行。
第二部分是它传入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
提供服务的库:
不,使用静态服务器中间件提供库是不错的
- Chev