Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Express.io不加载Javascript文件_Javascript_Node.js_Express_Coffeescript_Pug - Fatal编程技术网

Express.io不加载Javascript文件

Express.io不加载Javascript文件,javascript,node.js,express,coffeescript,pug,Javascript,Node.js,Express,Coffeescript,Pug,我有一个Express.io服务器正在运行,工作正常,但是我的Javascript文件无法正常加载 我有一个玉锉,看起来像这样: html head h1 Test index body script(src="/socket.io/socket.io.js") script(src="/javascripts/inHTML.js") express = require('express.io') app = express()

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

我有一个玉锉,看起来像这样:

html
    head
        h1 Test index
    body
        script(src="/socket.io/socket.io.js")
        script(src="/javascripts/inHTML.js")
express = require('express.io')
app = express()
r   = require('rethinkdb')

app.get '/', (req, res) ->
    res.render '../../client.jade'
还有一个Coffescript文件,如下所示:

html
    head
        h1 Test index
    body
        script(src="/socket.io/socket.io.js")
        script(src="/javascripts/inHTML.js")
express = require('express.io')
app = express()
r   = require('rethinkdb')

app.get '/', (req, res) ->
    res.render '../../client.jade'
Jade文件确实加载并且
脚本(src=“/socket.io/socket.io.js”)
也正确加载,但是当我使用Chrome检查站点时,第二个
标记返回一个
GET
错误。我尝试了多种方法来实现它,不幸的是没有成功。我看不出为什么
脚本(src=“/socket.io/socket.io.js”)
会加载,而我的另一个
脚本却不会加载

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

  • 咖啡脚本(文件夹)
  • javascripts(文件夹-有app.js和inHTML.js)
  • 数据(文件夹)
  • 节点_模块(文件夹-has/socket.io/socket.io.js)
  • Package.json(文件)
  • client.jade(文件)
当I
console.log\uuu dirname
打印
website/javascripts

我还尝试了
app.use express.static('../'+\uu dirname)
或类似的方法,也没有成功

编辑:
我试着这样做,但是我希望Javascript在一个单独的
.js
文件中。

如果我理解正确,您的Javascript inHTML.js与正在执行的脚本app.js位于同一目录中。
\uuuu dirname
是当前执行脚本所在目录的名称。这就是为什么当您登录
\uuu dirname
时,控制台会记录
网站/javascripts

所以基本上,这意味着您将编写
app.use(express.static(uu dirname+'/'))
script(src=“inHTML.js”)
。或者您可以编写
app.use(express.static('../')
脚本(src=“javascripts/inHTML.js”)


最合乎逻辑的做法,也是我建议的,是另一方面,将正在执行的脚本(我再次假设是app.js)放在根目录中,并将所有要用作静态文件的文件放在同一子文件夹中。这样,您就可以声明
app.use(express.static(uu dirname+'/nameOfSubfolder')。静态文件的路径将更符合逻辑,因为它们都有相同的起点

缺少的信息太多,无法调试您的案例。为什么
/socket.io
映射正确,而
/javascripts
映射不正确?定义了哪些进一步的路由和中间件?检查路由/中间件定义的排序,以确定某些非预期路由可能在要匹配的路由之前匹配
/javascripts
。1。你现在如何提供你的文件?(您使用的是express.static吗?)。socket.io位于哪里?3.正确的方法是(轻松地)使用express.static作为“public”文件夹,并在其中放入您想要提供的所有内容;例如,JavaScriptsHanks感谢您的评论。我完全不知道
/socket.io/socket.io.js/
为什么会起作用。我将用更多信息编辑我的问题。@Stian现在我不使用express.static,但即使我使用它,似乎也没有什么不同。socket.io位于node_模块中。更不用说socket.io了,我认为它是文件本身的服务器。你能更清楚地解释一下你用express.static做了什么吗?使用express.static可以解决您的问题,因此使用express.static的方法可能就是问题所在:)