2016-08-29 41 views
0

我是初学者,有节点。我正在尝试提供一个文件。我的项目的层次结构看起来像服务css和javascript文件

应用

modules 
    node_modules 
    public 
    css 
     index.css 
    html 
     index.html 
    javascript 
    routes 
    main.js 

内main.js

var express = require('express'); 
var app  = express(); 
var path = require('path') 
var port = 8080; 

app.use("/styles", express.static(path.join(__dirname + '../public/css'))); 
app.use("/scripts", express.static(__dirname + '../public/javascript')); 

app.get('/' , function(req , res){ 
    res.sendFile(path.join(__dirname,'../public/html/index.html')) 
}) 
app.listen(port) 

我想担任/路由的文件。它工作正常,但CSS和JavaScript的未加载 - 它会抛出错误browswer控制台

http://localhost:8080/css/index.css无法加载资源:在 服务器的404(未找到)

状态回应什么是设置路径到CSS的正确方法?我很难找到合适的解决方案。

谢谢!

+1

你的静态CSS路线被称为“风格”,而不是“css”;尝试'http:// localhost:8080/styles/index.css' – Hamms

+0

@Hamms它没有找到该文件,为什么样式? – Josh

回答

1

因为您设置了其他路线。将您的路由更改为静态文件。使用这个:

app.use(express.static('../public')); 
+0

使用'__dirname'时''/ public'的相对路径是不必要的,因为'__dirname'提供的正是这个路径。 'app.use(express.static(path.join(__ dirname,'public');'是使用'path.join()'的正确方法。'+'与你使用' path.join()'。 – peteb

+0

错误信息保持不变 – Josh

+0

@peteb你是对的,这是我的错误,我修复了它 –

3

问题在于你的路径定义。当你使用path.join时,你应该将字符串传递给它,并且这个方法将它们与特定于平台的分隔符一起作为分隔符,然后规范化结果路径。

所以你的风格的路径应该是:

app.use("/styles", express.static(path.join(__dirname, 'public', 'css'))); 

和你的风格将成为来自:

http://localhost:8080/styles/index.css 

由于您使用的是虚拟路径前缀(此处/样式)。

如果你不介意平台特定的分隔符,我。即知道你的服务器会像环境中的UNIX和不需要一个虚拟路径前缀就用:

app.use(express.static(__dirname + '/public')); 

和你的风格的任期将从CSS DIR:

http://localhost:8080/css/index.css 
+1

最终的样式路由将不会从'localhost:8080/index.css'服务。而是'localhost:8080/css/index.css' – peteb

+0

Tanx,Edited ... – dNitro

+0

错误仍然保持不变:( – Josh