如何在IIFE(立即调用函数表达式)函数中导入javascript模块?

时间:2019-03-11 13:34:56

标签: javascript

我想在IIFE(立即调用函数表达式)函数中添加一个javascript模块。不幸的是,我变成了以下语法错误:

     GridOptions.accentedSort = true;

我的SyntaxError: import declarations may only appear at top level of a module javascript模块如下:

math

我还有另一个javascript文件,看起来像这样:

var math = function () {
  return {
    add: function (num1, num2) {
       return num1 * num2;
    },
    square: function (num) {
       return num * num;
    }
  };
};

if (typeof module !== 'undefined') {
  module.exports = math;
}

导入在最顶部定义,但是语法错误坚持要求我必须将导入声明移到顶部。

我还尝试将import语句插入到我的IIFE(立即调用函数表达式)函数的第一行,但这不是有效位置。

万一有人知道这是怎么回事,请写评论。我将非常感激。

2 个答案:

答案 0 :(得分:0)

我认为您误以为Python的JavaScript模块。import "math";不会做任何事情。首先,您需要在变量中分配模块的导出,还需要使用相对路径,否则它将尝试将其解析为NPM模块。

替换

import "math";

使用:

import math from "./math";

此外,如果在函数或方法中间的某个地方使用SyntaxError: import declarations may only appear at top level of a module语句,则可能会发生错误import所有 import语句应位于模块的顶层。

答案 1 :(得分:-2)

能否请您尝试添加以下内容,然后再次检查,

module.exports.math = () => {
  return {
    add: (num1, num2) => {
       return num1 * num2;
    },
    square: (num) => {
       return num * num;
    }
  };
};