Не удается экспортировать модуль JS - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть модуль под названием утилиты в файле utilities.js.Я использую его для некоторых базовых функций js и хочу скрыть модуль от глобального пространства имен.Я понимаю, что для этого я должен создать модуль, экспортировать его, импортировать его в нужный файл, а затем вызвать его функции.Тем не менее, я не могу правильно экспортировать модуль.Я полагаю, это довольно просто, но все, что я пробовал, дает ошибку.Вот мой код:

var utilities = (function(){
return {
    debounce: function(func, wait, immediate){
        var timeout;
        return function() {
            var context = this, args = arguments;
            var later = function() {
                timeout = null;
                if (!immediate) func.apply(context, args);
            };
            var callNow = immediate && !timeout;
            clearTimeout(timeout);
            timeout = setTimeout(later, wait);
            if (callNow) func.apply(context, args);
        };
    }
}
})();

export { utilities };

Моя ошибка:

application.js:12560 Uncaught SyntaxError: Unexpected token export

Ответы [ 3 ]

1 голос
/ 17 апреля 2019

Попробуйте:

const utilities = function() {
  return {
    debounce: function(func, wait, immediate){
      var timeout;
        return function() {
          var context = this, args = arguments;
          var later = function() {
            timeout = null;
            if (!immediate) func.apply(context, args);
          };
        var callNow = immediate && !timeout;
        clearTimeout(timeout);
        timeout = setTimeout(later, wait);
        if (callNow) func.apply(context, args);
       };
     }
   }
 }

export default utilities;

или

function utilities() {
  return {
    debounce: function(func, wait, immediate){
      var timeout;
        return function() {
          var context = this, args = arguments;
          var later = function() {
            timeout = null;
            if (!immediate) func.apply(context, args);
          };
        var callNow = immediate && !timeout;
        clearTimeout(timeout);
        timeout = setTimeout(later, wait);
        if (callNow) func.apply(context, args);
       };
     }
   }
 }

 module.exports.utilities= utilities;  
0 голосов
/ 17 апреля 2019

это нормально работает в nodejs, если вы используете скрипт браузера, вам нужно иметь <script type="module">, чтобы использовать export ключевое слово (es модули) или просто перенести ваш код с babel

0 голосов
/ 17 апреля 2019

похоже, что вы экспортируете на стороне сервера.Для использования экспортного ключевого слова вам необходимо использовать babel.Вы можете обратиться к этому https://babeljs.io/setup#installation, чтобы узнать, как настроить его

для клиента. Вы можете настроить его, например, с помощью веб-пакета, для него также требуется транспонирование babel

npm install --save-dev babel-core
npm install @babel/preset-env --save-dev
...