Trouble shooting」カテゴリーアーカイブ

ExecJS::RuntimeError(エラー対処録)

初めて見たエラーだったので対処法を記しておきます。

経緯

chart.jsでグラフを作るために記事を参考に試したところエラーが発生した。

原因

window.draw_graph = ->
  ctx = document.getElementById("myChart").getContext('2d')
  barNum = 6
  labels = new Array(barNum)
  bgColors = new Array(barNum)
  bdColors = new Array(barNum)
  for i in [0...barNum]
    labels[i] = 'data' + i
    bgColors[i] = 'rgba(75, 192, 192, 0.2)'
    bdColors[i] = 'rgba(75, 192, 192, 1)'
  myChart = new Chart(ctx, {
    type: 'bar',
    data: {
      labels: labels
      datasets: [{
        label: '# of Votes',
        data: gon.data,
  backgroundColor: bgColors,
  borderColor: bdColors,
  borderWidth: 1
  }]
  },
  options: {
    scales: {
      yAxes: [{
        ticks: {
          beginAtZero:true
        }
      }]
    }
  }
  })

原因

インデントのズレなど構文が間違っているとなるようです。

解決法

Rubymineの自動フォーマット(⌥+⌘+Lキー)でインデント修正して解決しました。

window.draw_graph = ->
  ctx = document.getElementById("myChart").getContext('2d')
  barNum = 6
  labels = new Array(barNum)
  bgColors = new Array(barNum)
  bdColors = new Array(barNum)
  for i in [0...barNum]
    labels[i] = 'data' + i
    bgColors[i] = 'rgba(75, 192, 192, 0.2)'
    bdColors[i] = 'rgba(75, 192, 192, 1)'
  myChart = new Chart(ctx, {
    type: 'bar',
    data: {
      labels: labels
      datasets: [{
        label: '# of Votes',
        data: gon.data,
        backgroundColor: bgColors,
        borderColor: bdColors,
        borderWidth: 1
      }]
    },
    options: {
      scales: {
        yAxes: [{
          ticks: {
            beginAtZero: true
          }
        }]
      }
    }
  })

 

よくあるエラーらしいので、遭遇しても落ち着いて対処しよう

NoMethodError in ***Controller#show(エラー対処備忘録)

NoMethodError in ***Controller#show

undefined method `***’ for nil:NilClass

Extracted source (around line #30):
28
29
30
31
32
33
def show
   @macs = @user.macs.page(params[:page]).per(8)
end
def update

ハマってしまったので、同じことを繰り返さないために。

経緯

<span class="btn-sticky">すべての更新、作成日時を表示,非表示</span>
<% if @user.macs.any? %>
  <% @user.macs.each do |mac| %>
    <section class="panel">
      <div class="panel-left">
          <h2>目標:<%= mac.measurable %></h2>
          <h2>ゴールまでのプロセス<br><%= mac.actionable %></h2>
          <h2>目標達成が価値観に基づいているか?<br><%= mac.competent %></h2>
          <li><h3>更新日時:<%= mac.updated_at.to_s(:datetime_jp) %></h3>
            <h3>作成日時:<%= mac.created_at.to_s(:datetime_jp) %></h3></li>
        </ul>
      </div>
      <div class="panel-right">
        <%= link_to(content_tag(:i, '', class: "fas fa-trash-alt fa-3x faa-horizontal animated-hover fa-pull-right", style: "color: rgb(80,80,80);"), mac_path(mac.id), method: :delete, data: {confirm: "本当に削除しますか?"}) %>
        <%= link_to(content_tag(:i, '', class: "fas fa-edit fa-3x faa-vertical animated-hover fa-pull-right", style: "color: rgb(80,80,80);"), edit_mac_path(mac.id)) %>
    </section>
  <% end %>
<% end %>
<%= render 'shared/script' %>

user_idに紐付いたmacモデルのもの(:measurable, :actionable, :competent)を繰り返しで表示させたかった。

原因

***_controller.rb

def show
  @macs = @user.macs.page(params[:page]).per(8)
end

@userをmacs_controller.rbに定義していなかったためnilになった。

機能がほぼ同じだったので他のコントローラーからコピペしたせいで

リファクタリングでprivate にあった@user = User.find(params[:id])

を見落としていたため。

解決法

***_controller.rb

def show
  @user = User.find(params[:id])
  @macs = @user.macs.page(params[:page]).per(8)
end

@user = User.find(params[:id])

PendingMigrationError(エラー対処)

ActiveRecord::PendingMigrationError

Migrations are pending. To resolve this issue, run: bin/rails db:migrate RAILS_ENV=development

Extracted source (around line #576):
574
575
576
577
578
579
# Raises <tt>ActiveRecord::PendingMigrationError</tt> error if any migrations are pending.
def check_pending!(connection = Base.connection)
raise ActiveRecord::PendingMigrationError if ActiveRecord::Migrator.needs_migration?(connection)
end
def load_schema_if_pending!

解決方法(マイグレートする)

docker-compose exec web bundle exec rake db:migrate

 

unexpected end-of-input(エラー対処録)

Railsで開発中の時遭遇

エラーにあった時の解決法

syntax error, unexpected end-of-input, expecting keyword_end end

とりあえず翻訳機にかけると↓

構文エラー、予期しない入力終了、keyword_end を期待しています。

となっているので以下を記述↓(Railsの場合)

<% end %>

問題が解消された!

if文などでendが必要なときにendが記述されてないときによくあるエラーのようです。

Could not find xxxx in any of the sources(エラー対処法)

Could not find xxxx in any of the sourcesとは?

経緯:Macの空き容量が少なくなっていたのでClean / Purge dataで空き容量を増やした後に、

Dockerでdocker-compose upでコンテナを起動した時に発生したエラーです。

解決方法

gemfile.lockの記述を全て削除(まっさらな状態)した後に以下のコマンドをします。

$ rm gemfile.lock
$ docker-compose build
$ docker-compose up

エラーが出なくなっているのを確認したらOKです。

ERROR Rule can only have one resource source(エラー対処録)

①経緯:npm run devでサーバーを立ち上げる際に

ERROR Rule can only have one resource source (provided resource and test + include + exclude)

と表示されサーバー起動できない

②まず翻訳にかける

ERROR ルールは 1 つのリソースソースしか持つことができません(提供リソースとテスト + 包含 + 除外) と表示されました。

npmの依存関係の問題に関連しているようです。

③やってみたこと

npm i -D webpack@^4.46.0

カレントディレクトリに指定のパッケージをインストールするときに package.json の devDependencies欄 にパッケージ名が記録される。

④実行結果

npm WARN idealTree Removing dependencies.webpack in favor of devDependencies.webpack

npm WARN idealTree dependencies.webpack を削除して devDependencies.webpack を優先します。

added 74 packages, removed 121 packages, changed 29 packages, and audited 1290 packages in 14s

npm ruv dev で無事にサーバーが起動できました!

npm installで警告が出たとき(エラー対処録)

①経緯:npm install をしたときに↓のような表示が出たので

added 2 packages, and audited 1289 packages in 7s

105 packages are looking for funding
run `npm fund` for details

90 vulnerabilities (84 moderate, 6 high)

To address issues that do not require attention, run:
npm audit fix

To address all issues (including breaking changes), run:
npm audit fix --force

Run `npm audit` for details.

②:まず翻訳機にかけてみる

2パッケージ追加、7sで1289パッケージの監査を実施

105個のパッケージがを募集しています
詳細は `npm fund` を実行してください。

90件の脆弱性(中程度84件、高程度6件)

注意を払う必要のない問題に対処するには、実行します。
npm audit fix

すべての問題(ブレークチェンジを含む)に対処するには、実行します。
npm audit fix --force

詳細は `npm audit` を実行してください。

③:警告文の指示通りにコマンドをするだけ

npm audit fix

私の場合これで脆弱性が減りました・・・が0になってはいないので

引き続き調査します・・・

debugのやり方(Better Errors)

自分用にエラーが出たときの対応の仕方をメモしておく。

1:エラーをGemで見やすくする

Better_errorsの使い方(Docker)からBetter Errorsを導入

2:どこでエラーが起きたか調べる

エラーログの左側を見てどこでエラーが起きたか調べてみる

Application Frames: 自分が書いたコード

All Frames:                   ライブラリなど全部あわせたもの

またはdocker-compose up などでエラーログを見る

続きを読む