Не удалось разрешить спецификатор модуля vee-validate. Относительные ссылки должны начинаться с /, ./ или ../.

Мы не используем npm, так как работаем над Django проектом, но мы используем VueJS в шаблонах. Теперь мы успешно используем vee-validate, и мне нужно переопределить сообщения об ошибках. Проблема в том, что я не могу найти другого пути, кроме importing, и не могу этого сделать.

Я попытался создать новый <script type="module">, который явно не работает:

Failed to resolve module specifier "vee-validate". Relative references must start with either "/", "./", or "../".

Это мой код.

<script src="https://unpkg.com/[email protected]"></script>

<script type="module">
    import {localize} from 'vee-validate';

    localize({
        en: {
            messages: {
                required: 'xxxxxxxx',
                min: 'this field must have no less than {length} characters',
                max: (_, {length}) => `this field must have no more than ${length} characters`
            }
        }
    });
</script>

У вас есть идеи, как переопределить сообщения?


person Milano    schedule 08.02.2020    source источник
comment
Заявление «Мы не используем npm, поскольку мы работаем над Django», вероятно, отражает фундаментальное недоразумение. В проектах часто используются как клиентские, так и серверные диспетчеры пакетов для соответствующих зависимостей.   -  person Aluan Haddad    schedule 08.02.2020
comment
@AluanHaddad Да, но пока это самое простое решение. Просто чтобы импортировать vue на каждую нужную нам страницу. Есть ли способ сделать это без npm? Мы также используем шаблоны Django вместе с DRF.   -  person Milano    schedule 08.02.2020
comment
Да, есть способ заставить его работать. загрузите vee-validate, поместите его в корневой каталог и импортируйте, используя относительный путь, указанный в сообщении об ошибке.   -  person Aluan Haddad    schedule 08.02.2020


Ответы (1)


VeeValidate может работать нормально, если он включен в <script> (как показано в документах)

После включения становится доступен глобальный объект VeeValidate. Это будет работать, если вы используете не бета-версию (например, 2.0.9) (есть ли возможность использовать старую и бета версию?)

<script type="text/javascript">
VeeValidate.Validator.localize({
        en: {
            messages: {
                required: 'xxxxxxxx',
                min: 'this field must have no less than {length} characters',
                max: (_, {length}) => `this field must have no more than ${length} characters`
            }
        }
    });
</script>

К сожалению, в документации не так много примеров script использования, поэтому вы должны изучить API самостоятельно (просто сделайте console.log(VeeValidate)). Работать с версией NPM стало бы проще на 100% ...

person Michal Levý    schedule 08.02.2020