【问题标题】:How to deploy an heroku application and ignore a file?如何部署 Heroku 应用程序并忽略文件?
【发布时间】:2020-12-05 10:14:58
【问题描述】:

我正在为在线“构建自己的”纸牌游戏构建一个 Web 应用程序。在应用程序中,我有一个包含自定义卡片数据的cards.json 文件。每当用户创建卡片时,此文件都会使用 fs 更改。

每当我推送本地更改时,cards.json 文件都会在部署时被覆盖。这意味着所有远程数据在每次部署时都会丢失。如何远程包含cards.json 文件,但在使用git push heroku master 推送更改时不更改文件?

编辑:我想为了澄清原因,我尝试使用.gitignore 以及删除暂存区的文件。我不完全确定,但我认为问题在于部署应用程序时文件会被覆盖。

【问题讨论】:

    标签: node.js git heroku


    【解决方案1】:

    在 .gitignore 中添加 cards.json 和路径。 例如。 src/test/resources/testdata/cards.json

    【讨论】:

      【解决方案2】:

      所以我才发现运行时创建的数据总是会被删除/重置。

      https://devcenter.heroku.com/articles/dynos#ephemeral-filesystem

      我想对于遇到同样问题的其他人来说,最好的解决方法是:

      a) 查看数据库和 Heroku 插件,或者

      b) 这是一种非常有效的解决方法,并且可能有更好的方法来做到这一点,但是:

      // Go into a new directory, and use
      $ heroku ps:copy <FILENAME> --app <APPNAME>
      // Then, copy+paste the data from this file into your main repo.
      /* Now, each time you do this, you need to make sure you delete that file from the 
       * extra directory you created as ps:copy only works when the file doesnt exist locally.
       */
      

      我认为git fetch 在这种情况下不起作用,因为它只提取未更改的文件,而不是从测功机中提取更改的文件。

      【讨论】:

        【解决方案3】:

        在 git 中查找 .gitignore 文件,在我看来这正是您要查找的内容。

        如果一开始无法正确识别 .gitignore:

        git add [uncommitted changes you want to keep] && git commit
        git rm -r --cached .
        git add .
        git commit -m "fixed untracked files"
        

        【讨论】:

        • 我曾尝试为此使用 .gitignore,但它似乎对我不起作用。我确实想要cards.json 的远程副本,即使我确实忽略了对文件的更改,它仍然会在部署时被覆盖。
        • 那么它可能配置不正确。你能提供更多关于你到底做了什么的信息吗?总的来说,如果它写得正确,它没有理由不工作。
        • @Malmadork 顺便说一句,如果一开始无法正确识别 .gitignore,您可以尝试执行我在答案中编辑的内容
        • 基本上,当我尝试删除所有缓存、更新.gitignore 并推送更改时,它会崩溃,因为当我使用require('cards.json') 时文件不存在。我想我尝试过的所有事情包括:更改 gitignore、git rm -r --cached . 然后更新 gitignore、git rm --cached cards.jsongit update-index --skip-worktree cards.jsongit reset cards.jsongit checkout cards.json...这些似乎没有用。
        • @Malmadork 你应该做的是我上面写的gitignore的步骤,然后登录到服务器并在那里创建cards.json文件。这样,它就不会被跟踪,它仍然会存在于远程服务器上。
        猜你喜欢
        • 2020-01-15
        • 2018-07-25
        • 1970-01-01
        • 1970-01-01
        • 2020-05-08
        • 2017-05-26
        • 2020-07-03
        • 2019-02-11
        • 2017-11-06
        相关资源
        最近更新 更多