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

Sim*_*max 15 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'
Run Code Online (Sandbox Code Playgroud)

我的目录结构如下:

-- ekmHoliCal
  -- public
     --javascripts 
          client.js
  -- views
       index.jade
       layout.jade
Run Code Online (Sandbox Code Playgroud)

索引文件只包含行: 这是索引文件

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 
Run Code Online (Sandbox Code Playgroud)

当我导航到localhost/ekmHoliCal/index时,我按预期为索引页面提供服务.但是,如果我查看源代码,我会看到指向jquery的链接:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.js">
Run Code Online (Sandbox Code Playgroud)

如果我点击该链接肯定我看到了jquery文件的来源.

索引文件源还包含指向client.js文件的链接,如下所示:

<script type="text/javascript" src="/ekmholical/javascripts/simon.js"></script>
Run Code Online (Sandbox Code Playgroud)

但是当我点击它时,我得到了

无法获得/ekmholical/javascripts/client.js

我已经看到了这个相关的问题(Express-js无法获取我的静态文件,为什么?)并且无法看到我做错了什么

Pau*_*ong 27

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

<script type="text/javascript" src="/javascripts/simon.js"></script>
Run Code Online (Sandbox Code Playgroud)

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

app.use express.static(__dirname + '/public')
Run Code Online (Sandbox Code Playgroud)

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


Joh*_*edy 5

按照保罗·阿姆斯特朗的说法,您也可以这样做。

app.use('/public', express.static(__dirname + '/public');
Run Code Online (Sandbox Code Playgroud)

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

<script src="/public/javascripts/simon.js"></script>
Run Code Online (Sandbox Code Playgroud)