无法导出 JS 模块
Cannot Export JS Module
我在 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
尝试:
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;
您似乎是在服务器端导出。要使用 export 关键字,您需要使用 babel 进行转译。您可以参考此 https://babeljs.io/setup#installation 了解如何设置它
客户端可以用webpack来设置,也需要babel transpile
npm install --save-dev babel-core
npm install @babel/preset-env --save-dev
这在 nodejs 中运行良好,如果您使用的是浏览器脚本,则需要 <script type="module">
才能使用 export
关键字(es 模块)或仅使用 babel
转译您的代码
我在 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
尝试:
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;
您似乎是在服务器端导出。要使用 export 关键字,您需要使用 babel 进行转译。您可以参考此 https://babeljs.io/setup#installation 了解如何设置它
客户端可以用webpack来设置,也需要babel transpile
npm install --save-dev babel-core
npm install @babel/preset-env --save-dev
这在 nodejs 中运行良好,如果您使用的是浏览器脚本,则需要 <script type="module">
才能使用 export
关键字(es 模块)或仅使用 babel