J'utilise Rails 6.0.0.rc1 et j'espère implémenter le gem lazy_high_charts . J'ai installé Highcharts via Yarn mais j'ai reçu l'erreur suivante:
source 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" } ruby '2.6.3' gem 'rails', '~> 6.0.0.rc1' gem 'pg', '>= 0.18', '< 2.0' gem 'puma', '~> 3.11' gem 'sass-rails', '~> 5' gem 'webpacker', '~> 4.0' gem 'turbolinks', '~> 5' gem 'jbuilder', '~> 2.5' gem 'image_processing', '~> 1.2' gem 'bootsnap', '>= 1.4.2', require: false gem 'lazy_high_charts' group :development, :test do gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] end group :development do gem 'web-console', '>= 3.3.0' gem 'listen', '>= 3.0.5', '< 3.2' gem 'spring' gem 'spring-watcher-listen', '~> 2.0.0' end group :test do gem 'capybara', '>= 2.15' gem 'selenium-webdriver' gem 'webdrivers' end gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
Qui fait référence à la ligne de code suivante:
{ "name": "app_name", "private": true, "dependencies": { "@rails/actioncable": "^6.0.0-alpha", "@rails/actiontext": "^6.0.0-rc1", "@rails/activestorage": "^6.0.0-alpha", "@rails/ujs": "^6.0.0-alpha", "@rails/webpacker": "^4.0.7", "bootstrap": "^4.3.1", "highcharts": "^7.1.2", "jquery": "^3.4.1", "popper.js": "^1.15.0", "trix": "^1.0.0", "turbolinks": "^5.2.0" }, "version": "0.1.0", "devDependencies": { "webpack-dev-server": "^3.7.1" } }
J'ai vérifié si Highcharts est présent via le DOM, ce qui est le cas. Si j'ajoute le <script src="https://code.highcharts.com/highcharts.js"></script>
dans mes balises <head>
il se charge bien, ce qui est étrange. Toute aide serait appréciée.
javascript / packs / application.js
require("@rails/ujs").start() require("turbolinks").start() require("@rails/activestorage").start() require("channels") require('jquery') require("trix") require("@rails/actiontext") import Highcharts from 'highcharts'; import 'bootstrap'
package.json
window.chart = new Highcharts.Chart(options);
Gemfile
ReferenceError: Can't find variable: Highcharts
3 Réponses :
J'ai trouvé la solution. Ajouter:
window.Highcharts = Highcharts;
à mon application.js
fonctionné. Mes graphiques s'affichent maintenant.
Si vous avez un peu de temps, consultez cette discussion sur les rails et le webpack / er youtube.com/watch?v=fKOq5_2qj54 spécialement autour de la minute 17, il montre ce cas où un ancien plugin javascript s'attend à ce que quelque chose soit sur la portée globale. Il montre la première solution en faisant quelque chose comme vous, mais vers la minute 23, il montre une meilleure solution "webpackish" plus moderne en utilisant le chargeur d'import-loader.
Voici le contenu de mon application.js
dans Rails 6 avec webpacker:
import Highcharts from 'highcharts' import HighchartsMore from 'highcharts/highcharts-more'; import HighchartsSolidGauge from 'highcharts/modules/solid-gauge'; import HighchartsExporting from 'highcharts/modules/exporting'; window.jQuery = jQuery window.$ = $ window.Highcharts = Highcharts;
J'ai ajouté quelques extensions à titre d'exemple.
yarn add highcharts
console, yarn add highcharts
app/javascript/packs/application.js
pour Rails 6 avec webpacket:import Highcharts from 'highcharts'; require("highcharts/modules/data")(Highcharts) require("highcharts/modules/exporting")(Highcharts) require("highcharts/modules/offline-exporting")(Highcharts) require("highcharts/modules/map")(Highcharts) window.Highcharts = Highcharts;
Pouvez-vous montrer votre Gemfile?
Gemfile a été ajouté @Glyoko
J'ai trouvé la solution. Ajout de window.Highcharts = Highcharts; à mon application.js a fonctionné.