javascript - 将 “Vanilla” Javascript 库加载到 Node.js = 'Unexpected token export'

标签 javascript node.js commonjs

基于相关问题构建: Load "Vanilla" Javascript Libraries into Node.js

我正在尝试使用 Chris W. 在上述问题中描述的方法将“Vanilla”Javascript 库“rsa.js”加载到 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

有什么建议可以解决这个问题吗?

最佳答案

错误“意外的 token 导出”是由于库正在使用

导出默认的 thingToExport;

而不是

module.exports = thingToExport

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

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

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

不过,如果您不转译代码,export default 可能会出现问题,因此您可能需要将其更改为 module.exports方式。

关于javascript - 将 “Vanilla” Javascript 库加载到 Node.js = 'Unexpected token export',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37814725/

相关文章:

java - 生成动态表以及动态单选按钮以进一步在 JSP 中生成动态表

javascript - 对多个 li 元素使用类与 id 示例 20 使用 knockout 和 jQuery,性能和可维护性哪个更好?

javascript - 如何将同构的 commonJS 代码与 webpack 捆绑在一起

javascript - 允许模块与 AMD/CommonJs 或脚本标签一起工作的包装器?

commonjs - 有没有办法在原生 CommonJS 环境中使用 JSX?

javascript - 我怎样才能把这个匿名函数变成一个命名函数,这样我就可以把它移到一个外部 JS 文件中以便重用

php - 让某人向网站添加文本

javascript - Express PUT 显示无法 PUT 错误

javascript - 如何为 Promise 解析添加延迟?为 Node http.request Promise 添加延迟

node.js - 如何即时转换上传的文件并将其直接流式传输到 sails 内的 amazon S3