繁体   English   中英

使用 node.js 评估 javascript 源代码模块的最佳方法

[英]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"})

导致“不能在模块外使用导入语句”

最好的方法是节点 vm.Module 类

https://nodejs.org/api/vm.html#vm_module_evaluate_options

但那是在草案阶段和功能标志后面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM