【发布时间】:2016-07-25 07:28:19
【问题描述】:
我有一个 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(文件)
- client.jade(文件)
当我 console.log __dirname 打印 website/javascripts
我也试过app.use express.static('../' + __dirname)或类似的东西,也没有成功。
编辑:
我尝试使用 Express.io Routing Example,但是我希望将 Javascript 放在单独的 .js 文件中。
【问题讨论】:
-
缺少太多信息,无法调试您的案例。为什么
/socket.io被正确映射而/javascripts不是?还定义了哪些进一步的路由和中间件?检查您的路由/中间件定义的排序是否有一些意外路由可能在您要匹配的路由之前匹配/javascripts。 -
1.您现在如何提供文件? (你使用的是 express.static 吗?) 2. socket.io 在哪里? 3. 正确的方法(简单)是使用 express.static 作为“public”文件夹,并在其中放置您想要服务的所有内容;例如 javascripts
-
感谢您的评论。我完全不知道为什么
/socket.io/socket.io.js/正在工作。我将使用更多信息编辑我的问题。 -
@Stian 现在我没有使用 express.static,但即使我使用它似乎也没有什么不同。 socket.io 位于 node_modules 中。
-
没关系socket.io,我认为它为文件本身提供服务。您能否更清楚地解释一下您对 express.static 的尝试?使用 express.static 可以解决您的问题,因此问题可能是使用它的方式:)
标签: javascript node.js express coffeescript pug