【问题标题】:Express.io does not load Javascript fileExpress.io 不加载 Javascript 文件
【发布时间】: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


【解决方案1】:

如果我对您的理解正确,您的 javascript inHTML.js 与您执行的脚本 app.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'));。并且静态文件的路径将更加合乎逻辑,因为它们都具有相同的起点。

【讨论】:

    猜你喜欢
    • 2017-05-03
    • 1970-01-01
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多