我很难将pyodide输出显示到一个名为“output”的textarea元素。我使用react/next.js,当页面加载时,我希望在textarea框中看到python输出,但它只显示以下内容:
>>>
[object Promise]代码在控制台中运行良好。我只是不能在文本区域显示。如果有更好的方法将其附加到文本区域,我很高兴看到任何新的建议。
这是我正在使用的代码:
export default function Home() {
function addToOutput(stdout) {
output.value += ">>> " + "\n" + stdout + "\n";
}
async function main() {
const pyodide = await loadPyodide({
indexURL: "https://cdn.jsdelivr.net/pyodide/v0.20.0/full/"
});
let stdout = pyodide.runPythonAsync(`
print("Hello World")
`);
addToOutput(stdout);
}
main();
return (
<textarea readonly className="code-output" id="output" name="output"></textarea>
)
}谢谢你的帮助!
发布于 2022-09-17 16:27:27
消息[object Promise]意味着结果是一个承诺而不是一个字符串。你必须解决承诺(等待)才能得到预期的结果。
在您的示例中,runPythonAsnc()返回了一个承诺,随后执行了Python代码。您的代码试图显示尚未发生的结果。
注意:您正在调用结果stdout。RunPythonAsync()返回,即转换为JavaScript.的Python代码的结果。
https://stackoverflow.com/questions/73756151
复制相似问题