我的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
什么?!
好的,为了解决这个问题,我在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
并不聪明,尤其是对于轨道等需要的小文件。但是有两种可能的解决方案:
./data/
和git lfs track "data/*"
下的单个目录中>这似乎可以解决问题