【问题标题】:Deploy Nodejs on Heroku fails serving static files located in subfolders在 Heroku 上部署 Nodejs 无法提供位于子文件夹中的静态文件
【发布时间】:2013-06-17 05:59:50
【问题描述】:

我正在使用 Heroku 部署一个 NodeJs 应用程序。一切正常,除了提供静态文件的小问题。

我有如下配置

app.use(express.static(__dirname + '/htdocs'));

它工作正常,除非我尝试提供位于子文件夹中的静态文件。

www.example.com/bar.js // 这为文件 /htdocs/bar.js 提供服务

www.example.com/foo/bar.js // 这找不到文件 /htdocs/foo/bar.js

我忘了说在我的本地环境中一切正常,可能是 heroku 的问题,但我找不到原因。以前有人遇到过这个问题吗?解决方案?

谢谢!

【问题讨论】:

    标签: node.js heroku express static-files


    【解决方案1】:

    我终于找到了解决方案。

    我解决了在我的 package.json 中添加 npm 版本的问题。

    {
        "name": "bla",
        "version": "0.0.1",
        "dependencies": {
            "express": "3.2.6"
        },
        "engines": {
            "node": "0.10.11",
            "npm": "1.2.25"
        } 
    }
    

    【讨论】:

      【解决方案2】:

      显然,正如在这个问题中解释的那样:Heroku(Cedar) + Node + Express + Jade Client-side javascript files in subdirectory work locally with foreman+curl but not when pushed to Heroku,您不能将 __dirname 与 Heroku 一起使用。

      替代方案似乎是:

      // 在 web.js 的顶部
      process.env.PWD = process.cwd()

      // 然后
      app.use(express.static(process.env.PWD + '/htdocs'));

      【讨论】:

      • 嘿!我已经找到了,但没有工作......但我现在真的找到了灵魂!这只是我的 package.json,我忘了放 npm 版本,我不知道为什么,但这解决了整个问题。谢谢!
      • 我猜这是因为 Heroku 需要它来下载正确版本的 NPM。默认情况下,它应该下载一个非常旧的。我们不知道那时应该发生什么:)
      • 我已经向 package.json 添加了一个 npm 版本,并做了这个解决方案。还是不行。
      【解决方案3】:

      如果这些解决方案都不起作用,请查看my solution

      确保您的目录的子目录已添加到您的 Git 存储库中。

      【讨论】:

      • 这对我有用。我忽略了 .gitignore 中的 /dist 目录。我删除了它,静态文件链接按预期工作。
      • 我也一样,现在我知道 .gitignores 做了什么:P
      【解决方案4】:

      我通过从 .gitignore 文件中删除公用文件夹解决了我的问题。我不知道它在那里做什么。

      【讨论】:

        【解决方案5】:

        我为此苦苦挣扎了一段时间,不得不恢复使用 /public(来自 /dist)作为静态文件夹 - 现在完美运行

        【讨论】:

          【解决方案6】:

          在我的例子中,我的构建中有一个步骤实际上是清除 /public 文件夹,然后重新添加到 bundle.js 和 bundle.css。

          所以在我的本地我没有看到它,但是当它部署到 Heroku 时,资产丢失了。

          【讨论】:

            猜你喜欢
            • 2015-02-05
            • 1970-01-01
            • 2019-01-19
            • 2013-01-13
            • 2020-12-29
            • 2012-12-03
            • 2017-04-30
            • 2021-12-30
            • 1970-01-01
            相关资源
            最近更新 更多