我有一个函数可以让我在浏览器中运行 JavaScript 函数:
export async function executeFunction(data: LoadOutput, input: Record<string, any>): Promise<any> {
let args = [];
for (let param of data.functionTree[0].parameters) {
let value = input[param.name];
if(!value) {
return undefined;
}
args.push(value);
}
let func = new Function('return ' + data.jsCode)();
return await func.call(null, ...args);
}
一切正常,但现在我想通过使用外部库来添加更多功能。 我尝试在字符串中添加导入,但这不起作用并导致错误
There was an error: Module name, 'image-conversion' does not resolve to a valid URL.
有没有办法导入外部库? 最好不必将它们作为参数传递(这就是 ChatGPT 的建议,但需要对我的代码进行大规模重构)
是否有一个库可以与 Function 执行相同的操作,但可以让我将外部库添加到范围中?
有关更多信息:我正在使用 SvelteKit
这种依赖关系不能完全动态,除非您以某种方式运送所有节点模块并进行一些复杂的即时捆绑,但您可能可以例如在某处通过 URL import 导入模块并使用它。
import imageConversionUrl from 'image-conversion?url';
`import ... from ${JSON.stringify(imageConversionUrl)}`
URL 导入捆绑依赖项并将其作为构建中的资产输出。
(更常用于媒体资产,因此它们可以用作图像
src
。对于文件类型列表,URL 导入是隐式默认值。)