title: Uncaught TypeError: Cannot read property 'format' of undefined
body: <p>I am trying to format numbers in chartjs chart. I am getting this error on my console and the numbers are not visible on the chart</p>
  
  <blockquote>
    <p>Uncaught TypeError: Cannot read property 'format' of undefined</p>
  </blockquote>
  
  <p>You can refer the fiddle <a href="https://jsfiddle.net/prady/5mbd5m71/4/#&amp;togetherjs=9FyGkPSFzy" rel="nofollow noreferrer">here</a>. Line 74 on the fiddle</p>
  
  <pre><code>for (var i = 0; i &lt; firstDataSet.data.length; i++) {
                              var firstModel = firstDataSet._meta[Object.keys(firstDataSet._meta)[0]].data[i]._model;
                              var secondModel = secondDataSet._meta[Object.keys(secondDataSet._meta)[0]].data[i]._model;
                              var thirdModel = thirdDataSet._meta[Object.keys(thirdDataSet._meta)[0]].data[i]._model;
                              var fourthModel = fourthDataSet._meta[Object.keys(fourthDataSet._meta)[0]].data[i]._model;
                              var total = firstDataSet.data[i] + secondDataSet.data[i];
                              var total1 = thirdDataSet.data[i] + fourthDataSet.data[i];
     // Line below is causing the error 
  
  
   ctx.fillText(formatter.format(Number(firstDataSet.data[i])) + " ", firstModel.x, firstModel.y + 20); 
  
                              ctx.fillText((firstDataSet.data[i]) , firstModel.x, firstModel.y + 20);
                              ctx.fillText((secondDataSet.data[i] ) , secondModel.x, secondModel.y + 20);
                              ctx.fillText(total , secondModel.x, secondModel.y - 20);
                              ctx.fillText((thirdDataSet.data[i]) , thirdModel.x, thirdModel.y + 20);
                              ctx.fillText((fourthDataSet.data[i] ) , fourthModel.x, fourthModel.y + 20);
                              ctx.fillText(total1 , fourthModel.x, fourthModel.y - 20);
                              /*if (firstDataSet.data[i] &gt;= secondDataSet.data[i]) {
                                  ctx.fillText((firstDataSet.data[i] * 100 / total).toFixed(2) + '%', firstModel.x, firstModel.y + 30);
                              } else {
                                  ctx.fillText((secondDataSet.data[i] * 100 / total).toFixed(2) + '%', secondModel.x, secondModel.y + 30);
                              }
                              */
                          }
  
  var formatter = new Intl.NumberFormat('en-US', {
    style: 'currency',
    currency: 'USD',
    minimumFractionDigits: 2,
    // the default value for minimumFractionDigits depends on the currency
    // and is usually already 2
  });
  </code></pre>