Функция не найдена в пользовательском модуле — VueJS

#vue.js #module #vuejs2 #vue-router

#vue.js #модуль #vuejs2 #vue-маршрутизатор

Вопрос:

Я пишу две функции в модуле для использования в некоторых разделах гибридного мобильного приложения. Имя модуля «functs.js «:

 module.exports = {
    TRUNCATE_LETTERS (txt,max) {
        const limit = max || 15;
        const text = (txt amp;amp; txt.trim()) ? txt.trim() : '';
        const dots = '...';
        let resp = '';

        if ( txt.length > limit ) 
        {
            resp = txt.substring(0, limit)   ' '   dots;
        } else {
            resp = text   ' '   dots;
        }

        return resp;
    },

    TRUNCATE_WORDS (txt,max) {
        const limit = max || 10;
        const text = (txt amp;amp; txt.trim()) ? txt.trim() : '';
        const dots = '...';
        let resp = '';

        const arr = text ? text.split(' ') : [];
        let newArr = [];

        if ( arr.length > limit ) 
        {
            for ( let i = 0; i < limit; i   )
            {
                newArr.push( arr[i] );
            }

            resp = newArr.join(' ')   ' '   dots;
        } else {
            resp = text   ' '   dots;
        }

        return resp;
    }
}
  

Когда я вызываю TRUNCATE_LETTERS и комментирую TRUNCATE_WORDS, все идет нормально, но при раскомментировании я получаю эту ошибку в командной строке:

 warning  in ./src/views/Offers.vue?vueamp;
type=scriptamp;lang=jsamp;

"export 'TRUNCATE_LETTERS' was not found
 in '@/components/functs'
  

Я протестировал две функции в отдельном HTML-файле и не получил никаких ошибок.

Есть ли что-то, чего я не видел? Мне нужно усечь слова, а не буквы.

Спасибо за любую помощь.

Ответ №1:

Вот правильный синтаксис:

 module.exports = {
  TRUNCATE_LETTERS: function(txt,max) { ... },
  TRUNCATE_WORDS: function(txt,max) { ... }
}

Use :
    const { TRUNCATE_LETTERS, TRUNCATE_WORDS } = require("/path/mymodule");

    or

    const TRUNCATE_LETTERS = require("/path/mymodule").TRUNCATE_LETTERS ;
  

С экспортом по умолчанию / импортом в VueJS :

 const truncate = {
  TRUNCATE_LETTERS: function(txt,max) { ... },
  TRUNCATE_WORDS: function(txt,max) { ... }
}

export default truncate;

Use:
  import truncate from "/path/mymodule";
  truncate.TRUNCATE_LETTERS(...);

  or

  import { TRUNCATE_LETTERS, TRUNCATE_WORDS } from "/path/mymodule";
  

Комментарии:

1. После долгих проб и ошибок (даже используя ваш пример) В конце концов я предпочел экспортировать каждую функцию и использовать «import { TRUNCATE_WORDS, … } from ‘@/components/functs'». Теперь все идет нормально. Спасибо за вашу помощь. 🙂

2. Что ж. Теперь я получаю много предупреждений, в том числе от новой функции, которую добавлю позже: предупреждение в ./src/components/nav.vue?vueamp;type=scriptamp;lang=jsamp; «экспорт ‘RANDOM_ID’ не был найден в ‘@/components/functs’

3. Извините, я лучше продолжу экспортировать каждую функцию, потому что этот способ работает для меня. 🙂