为什么我的html文件没有加载express.static?

时间:2015-07-18 22:46:30

标签: javascript node.js express

文件结构:

- 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>

但是我收到了这个错误:

enter image description here

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

附带问题:通过lib投放express.static文件夹是不是很糟糕?我不这么认为,因为它们都是公开访问的。我不知道如果没有为每个文件写入明确的GET端点,我还能如何为该文件夹中的文件提供服务。

编辑:我的png个文件也没有提供。他们在client > assets > images下。

1 个答案:

答案 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