2016-04-05 54 views
0

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

我有一个玉文件,它看起来像这样:

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' 

玉文件不加载和script(src="/socket.io/socket.io.js")正确加载为好,然而,当我使用Chrome浏览器检查网站时,第二个<script>标记会返回GET错误。我尝试了多种方式使它工作,但不幸没有成功。我没有看到为什么script(src="/socket.io/socket.io.js")确实会加载,而我的其他script没有。

我的项目是这样的:网站是主要的目录,其中包含

  • coffeescripts(文件夹)
  • Java脚本(文件夹 - 具有app.js和inHTML.js)
  • 数据(文件夹)
  • node_modules(文件夹 - 具有/socket.io/socket.io.js)
  • 的package.json(文件)
  • client.jade(文件)

当我console.log __dirname是打印website/javascripts

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

编辑: 我试图做Express.io Routing Example,但我想在单独的.js文件的Javascript。

+0

缺少太多信息来调试您的案例。为什么'/ socket.io'正确映射而'/ javascripts'不是?还定义了哪些进一步的路由和中间件?检查路由/中间件定义的排序对于某些意外路由可能与您希望匹配的路由/ javascripts匹配。 – cepharum

+0

1.您现在如何提供文件? (您是否使用express.static?) 2. socket.io位于何处? 3。做到这一点(很容易)的正确方法是使用express.static作为“public”文件夹,并在其中放入您想要提供的所有内容;例如javascripts –

+0

感谢您的评论。对于为什么'/ socket.io/socket.io.js /'工作正常,我完全无能为力。我将用更多信息编辑我的问题。 – user3208216

回答

0

如果我正确地理解了你,你已经在执行脚本app.js所在的目录下有HTML inHTML.js文件。 __dirname是当前正在执行的脚本所在目录的名称。这就是为什么当您登录__dirname时控制台记录日志website/javascripts

所以基本上,这意味着你会写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'));。并且由于它们都具有相同的起点,因此您的静态文件的路径将更加合理。