导出功能javascript错误是什么意思,我该如何解决?

时间:2020-10-14 05:00:36

标签: javascript node.js

所以我试图在另一个脚本b.js中调用在a.js中创建的函数jsonToAim()。

这是我在a.js中定义的方式:

export function jsonToAim(jsonObj){...}

这就是我在b.js中的称呼方式

const backend = require('./a')`
let aimObj = backend.jsonToAim(jsonObj);

我最终收到此错误:

export function jsonToAim(jsonObj){
^^^^^^

SyntaxError: Unexpected token 'export'
    at wrapSafe (internal/modules/cjs/loader.js:992:16)
    at Module._compile (internal/modules/cjs/loader.js:1040:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
    at Module.load (internal/modules/cjs/loader.js:941:32)
    at Function.Module._load (internal/modules/cjs/loader.js:782:14)
    at Module.require (internal/modules/cjs/loader.js:965:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (/create-aims/getAim.js:4:17)
    at Module._compile (internal/modules/cjs/loader.js:1076:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)

有人知道我错了吗?抱歉,如果这是一个愚蠢的问题,我对JS还是个新手

2 个答案:

答案 0 :(得分:0)

有多种方法可以export来填充JS ...例如CommonsJS vs ES6导出语法。

由于某种原因,NodeJS目前不支持您正在使用的ES6 import/export语法。

尝试使用CommonJS语法(require/exports):

const jsonToAim = (jsonObj) => {...}

//At the end of your file:
export {
 jsonToAim
}

这是really good thread,关于ES6与CommonJS导出语法。

答案 1 :(得分:0)

问题是您使用ES模块而不是CommonJS

Node.js默认使用通用js require()

这意味着:

export function jsonToAim(jsonObj){...}

应该是

function jsonToAim(jsonObj){...}

module.exports.jsonToAim = jsonToAim;

稍后使用以下命令导入它:

const { jsonToAim } = require(...);

但是您也可以在node.js中使用ES模块。

对于这种类型的问题,我写了一个类似的答案:

ES6 imports for JWT