Express.io不加载Javascript文件
我有一个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()
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(文件)
当Iconsole.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的方法可能就是问题所在:)