为什么我不能从Expressjs / Nodejs获得我的JavaScript文件?
我开始尝试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
当我导航到本地主机/ 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/javascripts/client.js
我见过这个相关的问题( Express-js无法获取我的静态文件,为什么? ),看不到我做错了什么
您的脚本标记有错误的path。 它应该是
<script type="text/javascript" src="/javascripts/simon.js"></script>
明示,你已经设置了以下内容:
app.use express.static(__dirname + '/public')
这就告诉express / node public
目录应该作为你的web根目录。 里面的所有东西都可以通过/
来引用,所以如果你还有一个CSS文件夹,你可以使用/css/styles.css
跟随保罗·阿姆斯特朗所说的,你也可以这样做。
app.use('/public', express.static(__dirname + '/public');
这将允许你像这样引用你的js文件:
<script src="/public/javascripts/simon.js"></script>