将“Vanilla”Javascript库加载到Node.js ='意外的令牌导出'

时间:2016-06-14 14:21:20

标签: javascript node.js commonjs

以相关问题为基础: Load "Vanilla" Javascript Libraries into Node.js

我试图加载香草' Javascript库' rsa.js'使用Chris W.在上面的问题中描述的方法进入NodeJS。本质上我已经创建了一个自定义的node_modules目录,如下所示:

./node_modules/rsa/rsa-lib/rsa.js
./node_modules/rsa/rsa-lib/README
./node_modules/rsa/index.js

唯一的问题是,在rsa.js的最后一行编译模块失败:

undefined:836
export default rsa;
SyntaxError: Unexpected token export

rsa.js

var rsa = {};
 (function(rsa) {

   ...

})(rsa);
console.log("rsa",rsa);
export default rsa;

index.js

var fs = require('fs');

// Read and eval library
filedata = fs.readFileSync('./node_modules/rsa/rsa-lib/rsa.js','utf8');
eval(filedata);

/* The rsa.js file defines a class 'rsa' which is all we want to export */
exports.rsa = rsa

有关如何解决此问题的任何建议吗?

1 个答案:

答案 0 :(得分:1)

错误'意外的令牌导出'是因为库正在使用

引起的

export default thingToExport;

而不是

module.exports = thingToExport

这是Node(尚未)支持的ES6功能,因此当Node尝试运行代码时,会抛出错误。

如何解决:尝试修改库的最后一行,使其显示module.exports = rsa;

我应该补充一点,eval不是将库加载到自己的代码中的好方法。这就是require的用途。如果您已使用npm i安装了此库并且它位于node_modules中,则应该可以使用var rsa = require('rsa');将其加载到代码中。

但是,如果您没有转发代码,那么export default可能会出现问题,因此您可能希望将其更改为module.exports