【问题标题】:Heroku NodeJS index.js file is sent as a response instead of being executedHeroku NodeJS index.js 文件作为响应发送而不是被执行
【发布时间】:2019-01-04 06:44:19
【问题描述】:

我有一个 GitHub repo 在本地为我工作,例如使用“npm start”或 CLI “heroku local web”,但仅在推送到 Heroku 时提供 dist/index.js 文件的内容。

该应用采用 TypeScript 并使用 Gulp 构建。

当应用程序在本地运行时,转到http://localhost:5000/api/v1/wiki/magical_thinking 会返回正确的描述。但是,在部署应用程序后,它有

"start": "node dist/index.js", "postinstall": "gulp scripts"

在 package.json 文件中,并使用 https://github.com/heroku/heroku-buildpack-nodejs buildpack,转到 url https://tyno-lrs.herokuapp.com/api/v1/wiki/magical_thinking 将打印出 index.js 文件而不是执行它。我找不到涵盖此行为的任何其他问题,因此任何帮助都会很棒。

提前致谢。

【问题讨论】:

    标签: node.js typescript express heroku


    【解决方案1】:

    我相信问题出在 static.json 文件上。你的 static.json 看起来像这样:

    {
    "root": "dist/",
    "clean_urls": true,
    "routes": {
        "/**": "index.js"
     }
    }
    

    什么意思:

    • root:这允许您为应用程序的目录指定不同的资产根。例如,如果您使用的是 ember-cli,它自然会构建一个 dist/ 目录,因此您可能需要使用该 intsead。
    • clean_url:出于 SEO 的目的,您可以从 URL 中删除 .html 扩展名,例如博客网站。这意味着用户可以转到 /foo 而不是 /foo.html。
    • routes:您可以定义组合到单个文件的自定义路由。这允许您保留单页 Web 应用程序的路由。 支持以下运算符:
      • 支持 URL 中的单个路径段。在下面的配置中,/baz.html 会匹配,但 /bar/baz.html 不会。
      • 支持任意长度的 URL。在下面的配置中,/route/foo 和 /route/foo/bar/baz 都可以工作。

    routes 的描述示例:

    {
      "routes": {
        "/*.html": "index.html",
        "/route/**": "bar/baz.html"
      }
    }
    

    这意味着您将 index.js 文件作为资产托管 - 这就是当您进入您部署的应用程序的任何站点时显示其内容的原因。

    【讨论】:

    • 您好 METUAN,我已尝试删除存储库和服务器上的 static.json。但是,如果我重新启动服务器,该文件会重新恢复,并且我仍然可以得到 index.js 文件。您提供了一些有关导致此问题的原因以及如何解决的有用信息?
    猜你喜欢
    • 2019-05-14
    • 2021-03-20
    • 2017-06-09
    • 2020-10-13
    • 2018-08-16
    • 2012-04-20
    • 2015-10-01
    • 2021-01-17
    • 1970-01-01
    相关资源
    最近更新 更多