2012-01-24 121 views
14

我开始尝试使用nodejs/expressjs/coffeescript和jade视图引擎。为什么我无法从Expressjs/Nodejs获得我的JavaScript文件?

我有以下的设置,从我可以看到周围的例子看起来很标准。

app = express.createServer().listen process.env.PORT 

    app.configure -> 
     app.set 'views', __dirname + '/views' 
     app.set 'view engine', 'jade' 
     app.set 'view options', layout: true 
     app.use express.bodyParser() 
     app.use express.static(__dirname + '/public') 
     app.use app.router 


    app.get '/ekmHoliCal/index', (req, res) -> 
     res.render 'index' 

我的目录结构如下:

-- ekmHoliCal 
    -- public 
    --javascripts 
      client.js 
    -- views 
     index.jade 
     layout.jade 

索引文件包含什么,但行: 这是索引文件

的layout.jade文件包含:

!!! 5 
html(lang="en") 
    head 
     title Users 
     script(type="text/javascript", src="http://code.jquery.com/jquery-1.6.4.js") 
     script(type="text/javascript", src="/ekmholical/javascripts/client.js") 
    body 
     div!= body 

当我导航到本地主机/ ekmHoliCal /索引时,我按照预期得到索引页面。但是,如果我查看源代码我看到一个链接到jQuery的:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.js"> 

,如果我点击该链接果然我看到了jQuery文件的来源。

索引文件源还包含一个链接到我的client.js文件,如下所示:

<script type="text/javascript" src="/ekmholical/javascripts/simon.js"></script> 

,但是当我点击我得到

不能得到/ ekmholical/Java脚本/客户端。 JS

我见过此相关的问题(Express-js can't GET my static files, why?),并不能看到我在做什么错

回答

22

您的脚本标记有错误的路径。它应该是

<script type="text/javascript" src="/javascripts/simon.js"></script> 

快递,你设置以下内容:

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

这告诉表达了public目录应Web根ACT /节点。它的所有内容都可以通过/来引用,所以如果你还有一个CSS文件夹,你可以使用/css/styles.css

+0

感谢保罗。我已经尝试过你的建议没有成功。这就是说,你的答案是正确的。我否定提到的是,我在IIS下的windows上运行它,它似乎是我在IIS下导致该问题的网站配置。 –

1

跟随Paul Armstrong的说法,你也可以这样做。

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

这将允许您引用您的js文件是这样的:

<script src="/public/javascripts/simon.js"></script> 
相关问题