0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【atcoder-cli】acc templatesでエラーが出て困った話

Posted at

acc templatesでエラーが出て困った話

少しでもレート上昇に繋がればと思いatcoder-cliを導入したのですが、acc templatesでエラーが出て結構苦労しました。同じことで困っている方への助けになればと思い投稿します。

はじめに

エラーが出て苦労したのは事実ですが、私はatcoder-cliは素晴らしいツールだと感じました。ネガティブな感情の下でこの記事を書いたわけではないので、その点だけご留意いただけると嬉しいです。素晴らしいツールを開発してくださった作者の方に感謝します。(GitHubの方でも:star:を投げました。)

私の環境

OS: Windows10

どんなエラーだったのか&その解決方法

そもそもatcoder-cliのソースコードはどこにある?

atcoder-cliのソースコードのパスは以下の通りです。ユーザー名をご自身のものに変えてください。index.jsは改行の「か」の字もない感じで少し目に優しくないですが、あまり大きな変更はしないので安心してください。以下のエラー①とエラー②を解決すれば無事にacc templatesが使えるようになるはずです。

C:\Users\ユーザー名\AppData\Roaming\npm\node_modules\atcoder-cli\bin\index.js

エラー①

私の環境の場合acc templatesを実行すると以下のエラーが出てしまいました。

 SyntaxError: Unexpected token  in JSON at position 0

何か予期しないトークンが先頭に入ってしまっているようです。JSONファイルに問題があるのかと思いチュートリアルのtemplate.jsonの内容を貼り付けて再度実行してみたのですが解説せず。atcoder-cliのソースコードをいじる必要があると感じました。

エラー①解決方法

結論から言うと、エラー①に関してはsubstring()関数を使うことで解決できました。お使いのエディタでindex.jsを開き、「utf8」と検索すると、候補が2つ出ると思います。2つの候補の内、行数が若い方をクリックしてください。そして、以下のように変更してください。可読性のために改行を加えています。変更内容としては、

読み込んだファイルの内容を変数wに代入する。
変数qにwの先頭を除いたものを代入する。
JSON.parse(q)を変数nに代入する。

以上3点です。

index.js
const w=await i.promisify(a.readFile)(r.resolve(o,t,e.TEMPLATE_JSON_FILE_NAME),"utf8");
const q=w.substring(1);
const n=JSON.parse(q);

エラー②

ここで一回ターミナルを開いてacc templatesを実行してみてください。すると、今度はこのようなエラーが出ると思います。

 TypeError: Assignment to constant variable.

「定数に代入はできないよ」と怒られてしまいました。

エラー②解決方法

このエラーは単純に定数から変数に変更することで解決しました。エラー①で変更した部分のすぐ下に以下のような記述があると思います。

index.js
[s,l]=await p(n);

この部分を以下のように変更しましょう。先頭にvarを付けるだけです。

index.js
var[s,l]=await p(n);

おわりに

この段階でacc templatesを実行すれば無事に作成したテンプレートが読み込めているはずです。この記事が少しでもお役に立てていたら幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?