有没有办法使用导入的库从浏览器中的字符串运行 JavaScript?

问题描述 投票:0回答:1

我有一个函数可以让我在浏览器中运行 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

javascript function import scope svelte
1个回答
0
投票

这种依赖关系不能完全动态,除非您以某种方式运送所有节点模块并进行一些复杂的即时捆绑,但您可能可以例如在某处通过 URL import 导入模块并使用它。

import imageConversionUrl from 'image-conversion?url';
`import ... from ${JSON.stringify(imageConversionUrl)}`

URL 导入捆绑依赖项并将其作为构建中的资产输出。
(更常用于媒体资产,因此它们可以用作图像

src
。对于文件类型列表,URL 导入是隐式默认值。)

© www.soinside.com 2019 - 2024. All rights reserved.