XXX не определен - Импортирование класса из модуля OpenLayers Node в Django
Испытываю трудности с тем, чтобы заставить Node OpenLayers
работать в Django. npm
и ol
установлены, и файлы находятся в папке node_modules
в моем проекте. Я включил папку node_modules
в мой STATICFILES_DIRS
в settings.py
.
Я включаю модули OpenLayers
в свой шаблон, map.html
:
<script type="module" src="{% static 'ol/dist/ol.js' %}"></script>
<script type="module" src="{% static 'ol/Map.js' %}"></script>
<script type="module" src="{% static 'ol/View.js' %}"></script>
<script type="module" src="{% static 'ol/layer/Tile.js' %}"></script>
<script type="module" src="{% static 'ol/source/OSM.js' %}"></script>
<script type="text/javascript">
import "{% static 'ol/layer/Tile.js' %}";
const map = new ol.Map({
target: 'my-map',
layers: [
new ol.Layer.Tile({
source: ol.Source.OSM()
})
],
view: new ol.View({
center: [40, -70],
zoom: 2
})
});
</script>
Похоже, что это работает, поскольку я вижу, что файлы загружаются в инструментах разработчика моего браузера.
Но когда я пытаюсь использовать классы внутри модулей, я получаю ошибку:
Uncaught ReferenceError: ol is not defined
ДРУГИЕ МЕТОДЫ, КОТОРЫЕ Я ПРОБОВАЛ:
Я также пробовал вызывать имена классов напрямую:
<script type="text/javascript">
const map = new Map({
target: 'my-map',
layers: [
new Tile({
source: OSM()
})
],
view: new View({
center: [40, -70],
zoom: 2
})
});
</script>
Но получаем ту же ошибку:
Uncaught ReferenceError: Tile is not defined
В документации OpenLayers показано использование оператора import:
import "{% static 'ol/layer/Tile.js' %}";
но когда я пробую это, я получаю ошибку:
Uncaught SyntaxError: Cannot use an import statement outside a module
Я также нашел рекомендации попробовать:
const Tile = require("{% static 'ol/layer/Tile.js' %}");
но получаем ошибку:
Uncaught ReferenceError: Require is not defined