私は最初のbashスクリプトを書いていて、Heroku環境変数をcurl
で設定しようとしています。しかし、私のデータが無効なJSONであると言って、Herokuからの不正なリクエストエラーが発生しています。私はなぜ、理解していない。bash - HerokuにカールするときのJSONが無効
まず第一に、私のbashスクリプト:
#!/bin/bash
GIT_COMMIT=`node get_git_commit.js`
echo $GIT_COMMIT
curl -n -X PATCH https://api.heroku.com/apps/my-app-name/config-vars \
-d '{
"GIT_COMMIT": $GIT_COMMIT
}' \
-H "Content-Type: application/json" \
-H "Accept: application/vnd.heroku+json; version=3"
のJavaScriptファイル、get_git_commit.js
このスクリプト参照:
const fs = require("fs")
require("child_process").exec("git rev-parse HEAD", (err, stdout) => {
const commit = stdout.replace(/\n/g, "")
console.log(`"${commit}"`)
}
私はbashスクリプトを実行すると、echo
が正しくコンソールにGitのハッシュを印刷しますしかし、Herokuが返すのは
{
"id":"bad_request",
"message":"Provided data is invalid JSON."
}
です手動でデータを手動で設定しただけでは、完全に機能していました。
私はbashを書くのが全く新しいので、多分、私が見逃しているいくつかの基本的な慣習があります - どんな指針も高く評価されるでしょう。
あなたは間違いなく(私はハッシュが厳密に数字でないことを忘れていました)、 '$ GIT_COMMIT'を引用符で囲むようにしました - ' console.log( '" $ {stdout} "') 'in JSファイル - しかし、それでも同じエラーが発生しました( 'echo'に引用符が含まれていました)。 – skwidbreth
正確なリクエストボディとは何ですか? – SLaks