翻译javascript模块



我试图使用QickJS和NectarJS运行一些NodeJS代码,但我遇到了一个老问题,如何导入模块。

特别是,qjs -m <source-js>加载ES6模块,并期望importexport语句,而不是require,并编写module.exportsexports

我还使用了一个内置的std模块(无法通过node_module解析(。

对于第一个示例,我手动更改了代码,但我希望有一个脚本来进行转换。我本以为这在webpack上是可行的,但我不知道怎么做。

示例

main.js

const h = require('./hello.js');
h.sayHello();

hello.js

const h = require('./print.js');
function sayHello(){
h.print("Hello");
}
module.exports = {sayHello};

print.js

module.exports = {
print(s) {
console.log(s);
}
}

我可以使用命令node main.js运行此操作,但qjs -m main.js将失败,因为未定义"要求">

QuickJS不支持CommonJS模块。相反,它支持遵循ECMA标准的本地JS模块。所以你要么

  1. 从CommonJS转换到std模块,然后使用import/export而不是require。正如你提到的webpack,那会很好。ESBuild也可以从CommonJS(.cjs(转换到ES模块(.mjs(。或者
  2. 您可以尝试QuickJS的require加载程序,我在这里找到了它https://github.com/IvanGaravito/quickjs-require.

尊敬的Andreas

最新更新