rails 6 package.json部署问题“ JSON在位置0处出现意外令牌v”

问题描述 投票:0回答:1

我的cap deploy到Rails生产环境失败,并出现以下纱线错误Unexpected token v in JSON at position 0,这对我来说绝对没有意义。下面是该纱线错误日志片段,下面是导致错误的package.json:

纱线错误日志:

PATH:
  /home/deploy/synapse/shared/bundle/ruby/2.5.0/bin:/home/deploy/.rbenv/versions/2.5.5/bin:/home/deploy/.rbenv/libexec:/home/deploy/.rbenv/plugins/ruby-build/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Yarn version:
  1.19.2

Node version:
  8.16.2

Platform:
  linux x64

Trace:
  SyntaxError: /home/deploy/[APPNAME]/releases/20191210180716/package.json: Unexpected token v in JSON at position 0
      at JSON.parse (<anonymous>)
      at /usr/share/yarn/lib/cli.js:1625:59
      at Generator.next (<anonymous>)
      at step (/usr/share/yarn/lib/cli.js:304:30)
      at /usr/share/yarn/lib/cli.js:315:13
      at <anonymous>

package.json

{
  "dependencies": {
    "@rails/webpacker": "4.2.2",
    "serialize-javascript": "^2.1.1"
  },
  "devDependencies": {
    "serialize-javascript": "^2.1.1",
    "webpack-dev-server": "^3.9.0"
  },
  "license": "UNLICENSED"
}

这无法在asset:precompile处部署到生产环境,但是在本地使用RAILS_ENV =生产预编译顺利完成。因此,我在这里做错了什么?

编辑OK,当我在生产机器上查看package.json时,如下所示:

version https://git-lfs.github.com/spec/v1
oid sha256:4289b53b39c2c47dd-other-digest-crap-beb0aefed39c39fa84e3b41f72056982
size 226

什么?!

deployment package.json production-environment webpacker ruby-on-rails-6
1个回答
0
投票

临时修复

好的,为了解决这个问题,我在Capistrano deploy.rb中从共享中显式链接了package.json。>

append :linked_files, "package.json" # depending on your religion you may also include "package-lock.json"

将scp文件保存到应用程序共享文件夹等,后缀。

更好的修复

[好,所以这个问题根本存在的原因是因为我盲目地将git-lfs用于所有json文件。这个特定的应用程序具有很多json数据。跟踪*.json并不聪明,尤其是对于轨道等需要的小文件。但是有两种可能的解决方案:

  1. 我没有在我的vps上安装git-lfs,安装解决了问题-之类的。问题仍然是,我可能不希望lfs跟踪每个json文件都只是大json数据文件]
  2. 我将大型json文件移动到./data/git lfs track "data/*"下的单个目录中>
  3. 这似乎可以解决问题

© www.soinside.com 2019 - 2024. All rights reserved.