我开始尝试使用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?),看不出我做错了什么
答案 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>