为什么我不能从Expressjs / Nodejs获取我的javascript文件?

时间:2012-01-24 14:52:40

标签: node.js express pug

我开始尝试使用nodejs / expressjs / coffeescript和jade视图引擎。

我有以下设置,从我可以从周围的示例中看到的看起来非常标准。

    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 

当我导航到localhost / ekmHoliCal / index时,我按预期为索引页面提供服务。但是,如果我查看源代码,我会看到指向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/javascripts/client.js

我已经看到了这个相关的问题(Express-js can't GET my static files, why?),看不出我做错了什么

2 个答案:

答案 0 :(得分:25)

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

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

在快递中,您设置了以下内容:

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

告诉express / node public目录应该作为你的web根目录。其中的所有内容都可以通过/引用,因此如果您还有一个CSS文件夹,则可以使用/css/styles.css

答案 1 :(得分:4)

继续保罗阿姆斯特朗所说的话,你也可以这样做。

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

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

<script src="/public/javascripts/simon.js"></script>