在heroku上部署应用程序时出现过时的纱线锁文件错误

Posted

技术标签:

【中文标题】在heroku上部署应用程序时出现过时的纱线锁文件错误【英文标题】:Outdated yarn lockfile error on deploying app on heroku 【发布时间】:2019-07-01 05:55:55 【问题描述】:

我已经成功注册 Heroku,但是当我 git push 并运行 app 时,它显示

Application error. An error occurred in the application and your page could not be served. If you are the application owner, check your logs for details. You can do this from the Heroku CLI with the command

然后,我从 Web 浏览器转到 Heroku,在“手动部署”下,单击“部署分支”并得到以下错误列表:

    -----> Node.js app detected

    -----> Creating runtime environment

           NPM_CONFIG_LOGLEVEL=error
           NODE_ENV=production
           NODE_MODULES_CACHE=true
           NODE_VERBOSE=false

    -----> Installing binaries
           engines.node (package.json):  unspecified
           engines.npm (package.json):   unspecified (use default)
           engines.yarn (package.json):  unspecified (use default)

           Resolving node version 10.x...
           Downloading and installing node 10.15.1...
           Using default npm version: 6.4.1
           Resolving yarn version 1.x...
           Downloading and installing yarn (1.14.0)...
           Installed yarn 1.14.0

    -----> Building dependencies
           Installing node modules (yarn.lock)
           yarn install v1.14.0
           [1/4] Resolving packages...
           error Your lockfile needs to be updated, but yarn was run with `--frozen-lockfile`.
           info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
    -----> Build failed
     !     Outdated Yarn lockfile
           Your application contains a Yarn lockfile (yarn.lock) which does not
           match the dependencies in package.json. This can happen if you use npm
           to install or update a dependency instead of Yarn.
           Please run the following command in your application directory and check
           in the new yarn.lock file:
           $ yarn install
           $ git add yarn.lock
           $ git commit -m "Updated Yarn lockfile"
           $ git push heroku master

           https://kb.heroku.com/why-is-my-node-js-build-failing-because-of-an-outdated-yarn-lockfile
     !     Push rejected, failed to compile Node.js app.
     !     Push failed

谁能给我一些建议?我不知道为什么它提到纱线。这是我的 package.json:

    
      "name": "tictacttoe",
      "version": "0.1.0",
      "private": true,
      "engines": 
        "node": "v10.13.0",
        "npm": "6.4.1"
      ,
      "dependencies": 
        "react": "^16.7.0",
        "react-dom": "^16.7.0",
        "react-scripts": "2.1.3"
      ,
      "scripts": 
        "start": "react-scripts start",
        "build": "react-scripts build",
        "test": "react-scripts test",
        "eject": "react-scripts eject"
      ,
      "eslintConfig": 
        "extends": "react-app"
      ,
      "browserslist": [
        ">0.2%",
        "not dead",
        "not ie <= 11",
        "not op_mini all"
      ],
      "devDependencies": 
        "webpack": "^4.19.1",
        "webpack-dev-server": "^3.1.14"
      
    

【问题讨论】:

【参考方案1】:

我不确定是因为 heroku 还是你的配置有问题......但基本上 heroku 正在运行 yarn 来安装你的依赖项,因为你没有 yarn.lock (或者有一个过时的一),它会导致错误。

尝试在您的系统上全局安装 yarn 并在项目的根目录上运行 yarn。之后,如果您提交 yarn.lock 文件,它可能会起作用。

AFAIK,heroku 会根据您是否有 yarn.lockpackage-lock.json 来检测您的包管理器。所以你要么删除yarn.lock,要么在你项目的根目录下运行yarn来更新它。

【讨论】:

@hasany 基本上,OP 的错误是他有一个过时的纱线锁文件。如果你运行类似npm install --save package 的东西,而你的包管理器应该是纱线,就会发生这种情况。这将导致您的 yarn.lock 过时(因为 package.json 更改而 yarn.lock 没有更改)。解决此问题的最简单方法是在项目根目录上运行 yarn 以创建正确的锁定文件。 我知道它是可信的,但我已经删除了 yarn.lock 文件并通过运行 yarn 命令重新生成了它,但我仍然遇到同样的错误。我也尝试在缺少 yarn.lock 文件的情况下推送到 heroku,但仍然出现相同的错误消息,尽管 heroku 本身会生成 yarn.lock 文件。我读过一篇文章,提到我的 package.json 文件中可能缺少一些包。 你能发布确切的错误日志吗?也许我可以帮助调试错误的原因。【参考方案2】:

这是因为 Heroku 无法找到更新的纱线锁文件。运行以下命令,您应该一切顺利。

yarn install 
git add yarn.lock 
git commit -m "updating yarn" && git push
git push heroku master

【讨论】:

以上是关于在heroku上部署应用程序时出现过时的纱线锁文件错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Heroku 上部署 MEAN 应用程序时出现应用程序错误

在 Heroku 上部署 React 应用程序和 Nginx 时出现问题

在 Heroku 上部署时出现 Django 1.7 迁移错误

如何解决在 Heroku 上部署 React 应用程序时出现的错误

在 heroku 上部署反应应用程序时出现问题 - 控制台上的错误代码 503

在 Heroku 上部署 ktor 应用程序时出现 JDBC_DATABASE_URL 错误