Rails 6 и Google Maps для Rails

Я использую Rails 6.0.0.rc1 и надеюсь реализовать Google-Maps-for -Рельсы драгоценный камень. Я установил подчеркивание через Yarn и добавил необходимые скрипты Google с моим API в свой тег.

Я загрузил gmaps_google.js и добавил его в папку vendor / js, так как Rails 6 не имеет конвейера ресурсов, а вместо этого использует webpacker. Вот где я думаю, проблема заключается в том, что я получаю следующую ошибку:

ReferenceError: Can't find variable: Gmaps

Я обновил свой webpacker.yml файл, чтобы найти папку vendor / js, и при проверке DOM кажется, что она присутствует.

webpacker.yml

# Additional paths webpack should lookup modules
  # ['app/assets', 'engine/foo/app/assets']
resolved_paths: ['vendor/js']

В моем javascript/packs/application.js я включил строку require("gmaps_google"). Обратите внимание: у меня была такая же проблема с Highcharts, но я смог успешно загрузить скрипт, но добавил window.Highcharts = Highcharts;, но я не уверен, смогу ли я сделать то же самое с параметром require?

javascript / packs / application.js

require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require('jquery')
require("trix")
require("@rails/actiontext")

window.Highcharts = Highcharts;
import Highcharts from 'highcharts';
import addMore from "highcharts/highcharts-more";
import 'bootstrap'
import 'underscore'

require("gmaps_google")

package.json

{
  "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",
    "underscore": "^1.9.1"
  },
  "version": "0.1.0",
  "devDependencies": {
    "webpack-dev-server": "^3.7.1"
  }

person DollarChills    schedule 14.06.2019    source источник


Ответы (1)


Это из-за того, что в gmaps_google.js нет операторов export, перед этим вам следует преобразовать анонимные функции в именованные функции.

В качестве примера:

// foo.js
// function need to be converted
(function() {
  // function body
}).call(this);

преобразовать анонимную функцию в именованную функцию

// foo.js
function foo() {
  // function body
};

export { foo as Foo };

вызвать оператор import в другом файле.

// bar.js
import Foo from 'foo';

Foo();
person Cong Chen    schedule 17.06.2019