Как исправить ошибку "Uncaught reference: FilePond не определена" в перетаскивании FilePond
Я пытаюсь использовать FilePond для реализации функции перетаскивания на моем сайте. Я скачал filepond css и js файлы и правильно установил их. Каждый раз, когда я пытаюсь завершить настройку, я получаю сообщение об ошибке "Uncaught reference error: FilePond не определен".
{% extends 'main/dashboardbase.html'%}
{% block content %}
{% load static %}
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-tofit=no">
<!-- Bootstrap CSS -->
<title>Hello, world!</title>
<link rel="stylesheet "type="text/css" href="{% static 'main/add.css'%}">
<link rel="stylesheet "type="text/css" href="{% static 'main/filepond.css'%}">
<link rel="stylesheet" type="text/css" href="{% static 'main/filepond-plugin-image-preview.css'%}">
</head>
<body>
<button type="submit" id="add">Save</button>
<a href="{% url 'main:products'%}">
<button id="cancel" >Cancel</button>
</a>
<div class="col-sm-12 col-lg-6" id="inner">
<form method="POST" enctype="multipart/form-data" id="inputform" name="form1">
{% csrf_token %}
<h4>Title</h4>
<input type="text" name="product_title" id="product_title" placeholder="Give your product a name">
<h4>Price</h4>
<input type="text" name="product_price" id="product_price" placeholder="0.00">
<h4>Description</h4>
<input type="text" name="product_description" id="product_description" placeholder="Write a description about your product">
<input type="file" name="filepond">
</form>
</div>
<script type="text/javascript" src="{% static 'main/add.js'%}"></script>
<script src="{% static 'main/filepond-plugin-image-preview.js'%}"></script>
<script src="{% static 'main/filepond.js'%}"></script>
<script>
const inputElement = document.querySelector('input[type="file"]');
const pond = FilePond.create( inputElement );
</script>
</body>
</html>
{% endblock%}
1 ответ
Решение
Вы загружаете файл FilePond.js правильно, но вы пытаетесь использовать его до его загрузки. Чтобы решить эту проблему, переместите логику инициализации внутри 'DOMContentLoaded'
обработчик события.
<script>
document.addEventListener('DOMContentLoaded', function() {
// Register any plugins
FilePond.registerPlugin(FilePondPluginImagePreview);
// Create FilePond object
const inputElement = document.querySelector('input[type="file"]');
const pond = FilePond.create(inputElement);
});
</script>