2015-07-18 78 views
2

文件结构:为什么我的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> 

但我发现了这个错误:

enter image description here

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

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

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

+0

乍一看我以为这是一个相对路径的问题。尝试更改您的引用以正斜杠开始,使参考根相对。然后编写路径,就好像您正在从站点根目录导航到文件。例如:'/ client/directives/Statement/statement.directive.js'。如果那有效,那么你知道你有一个相对路径问题。不,使用静态服务器中间件服务库也不错。 – Chev

+0

@Chev正在做你所说的“404”。 –

+0

如果你有一个git repo我可以克隆,我很乐意帮助调试问题。 – Chev

回答

0

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

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

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

When we get a request to /foo/bar.ext , we're going to check if /client/foo/bar.ext exists. If it does, we'll serve it. If not, we won't.

我正好一直在请求

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

所以它会看看是否

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

存在,如果是的话它会为它服务。但它显然不存在。我由提出请求修正了问题

/directives/Statement/statement.directive.html 

用作向库与express.static

And no, it's not bad to serve libs with a static server middleware

- Chev

相关问题