[英]Best way to evaluate javascript source code module with node.js
使用节点,我将打字稿 tsx 文件转换为 int javascript。 然后我需要调用该 javascript 代码中描述的函数。 使用 ES6 模块。
我用
writeFileSync('./temp/page1.js', js) // js is the module source code
import page from '../temp/page1.js'
页面在这里是默认导出,这是我要调用的函数。
这工作正常,但我想知道是否有更好的方法来调用模块源代码中的函数? 一种避免将源代码保存到临时文件的方法。
eval 不会是一个安全问题,但我认为它不会给我默认的导出,在这个旧函数中不考虑模块。
也许与节点有关?
我发现https://www.npmjs.com/package/node-eval可以避免文件保存,尽管它仍然需要一个文件名,这会导致我的代码有些脆弱。
节点:模块节点:vm
可能很有希望,查看https://github.com/node-eval/node-eval/blob/master/index.js但我还没有弄清楚是否以及如何。
类似,但与 require 更相关: 从内存中的字符串加载 node.js 模块
https://github.com/floatdrop/require-from-string也不起作用
带有 node:vm 的所有变体
import vm from 'node:vm'
let context = vm.createContext({}, {name:"temp1.mjs"})
vm.runInContext(js, context, {filename: "temp2.mjs"})
导致“不能在模块外使用导入语句”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.