【问题标题】:Why can't I get to my javascript files from Expressjs/Nodejs?为什么我无法从 Expressjs/Nodejs 访问我的 javascript 文件?
【发布时间】:2012-02-17 19:41:36
【问题描述】:

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

我有以下设置,从周围的示例中可以看出,这似乎很标准。

    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?),但看不出我做错了什么

【问题讨论】:

    标签: node.js express pug


    【解决方案1】:

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

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

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

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

    这告诉 express/node public 目录应该作为你的 web 根目录。里面的所有东西都可以通过/引用,所以如果你也有一个CSS文件夹,你可以使用/css/styles.css

    【讨论】:

    • 谢谢保罗。我已经尝试过你的建议,但没有成功。也就是说,你的答案是正确的。我否认提到的是我在 IIS 下的 Windows 上运行它,这似乎是我在 IIS 下的站点配置导致了问题。
    【解决方案2】:

    按照 Paul Armstrong 所说的,您也可以这样做。

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

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

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

    【讨论】:

    • EXACT : Express api 4.x 说 : 从应用程序目录中的“public”目录为应用程序提供静态内容: // GET /style.css 等app.use(express.static(__dirname + '/public'));否则 '/' 是您计算机的根目录。
    猜你喜欢
    • 2016-08-06
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    相关资源
    最近更新 更多