2016-06-14 64 views
1

大厦相关的问题:Load "Vanilla" Javascript Libraries into Node.js装载“香草”的JavaScript库到的Node.js =“意外令牌出口”

我试图加载“香草”的Javascript库“rsa.js”成的NodeJS ,使用Chris W.在上述问题中描述的方法。从本质上说我已经创建了一个自定义的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 

任何建议如何解决这个问题?因为该库是用

export default thingToExport;

,而不是

module.exports = thingToExport

这种 '意外令牌出口' 造成

回答

1

该错误是一个ES6功能不被节点支持(还) ,所以当Node尝试运行代码时,会引发错误。

如何解决:尝试修改库的最后一行,以便它说module.exports = rsa;

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

虽然如此,如果您没有编译代码,它可能与export default有问题,因此您可能希望将其更改为module.exports

+0

明智,交换它为module.exports = rsa;诀窍。关于eval()还有一个好处,虽然不知道你可以'需要'一个香草JavaScript库... –

+0

你可以使用'require('./path/to/file.js')'来要求你自己的JS文件,所以我认为你应该能够'要求'别人的JavaScript – otajor