Express.io不加载Javascript文件

时间:2016-04-05 11:21:21

标签: javascript node.js express coffeescript pug

我运行了一个Express.io服务器,工作正常,但我的Javascript文件无法正常加载。

我有一个Jade文件,如下所示:

html
    head
        h1 Test index
    body
        script(src="/socket.io/socket.io.js")
        script(src="/javascripts/inHTML.js")

和一个看起来像这样的Coffescript文件:

express = require('express.io')
app = express()
r   = require('rethinkdb')

app.get '/', (req, res) ->
    res.render '../../client.jade'

Jade文件确实加载并且script(src="/socket.io/socket.io.js")也正常加载,但是当我使用Chrome检查网站时,第二个<script>标记会返回GET错误。我尝试了多种途径使其工作,遗憾的是没有成功。我没有看到script(src="/socket.io/socket.io.js")加载的原因,而我的其他script没有。

我的项目如下所示:网站是主目录,其中包含

  • coffeescripts(文件夹)
  • javascripts(文件夹 - 有app.js和inHTML.js)
  • 数据(文件夹)
  • node_modules(文件夹 - 有/socket.io/socket.io.js)
  • Package.json(file)
  • client.jade(file)

当我console.log __dirname打印website/javascripts

我也试过app.use express.static('../' + __dirname)或类似的东西,也没有成功。

编辑: 我尝试执行Express.io Routing Example,但我想在单独的.js文件中使用Javascript。

1 个答案:

答案 0 :(得分:0)

如果我正确理解你,你将javascript inHTML.js放在与执行脚本app.js相同的目录中。 __dirname是当前正在执行的脚本所在目录的名称。这就是控制台在您记录website/javascripts时记录__dirname的原因。

基本上,这意味着你会写app.use(express.static(__dirname + '/'))script(src="inHTML.js")。或许你可以写app.use(express.static('../'));script(src="javascripts/inHTML.js")

最合乎逻辑的事情,以及我建议的另一方面,放置你的执行脚本,再次我假设是app.js,在根目录中放置你想要服务的所有文件静态在同一子文件夹中。这样你可以说明app.use(express.static(__dirname + '/nameOfSubfolder'));。并且静态文件的路径将更符合逻辑,因为它们都具有相同的起点。