无法导出JS模块

时间:2019-04-17 19:55:08

标签: javascript es6-modules

我在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 个答案:

答案 0 :(得分:1)

尝试:

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;  

答案 1 :(得分:0)

似乎您正在服务器端进行导出。要使用export关键字,您需要使用babel进行转换。您可以参考此https://babeljs.io/setup#installation来学习如何设置

对于客户端,您可以使用webpack进行设置,例如,它也需要babel transpile

SELECT

答案 2 :(得分:0)

这在nodejs中很好用,如果您使用的是浏览器脚本,则需要<script type="module">使用export关键字(es模块)或仅使用babel转换代码