我有一个简单的扩展,它使用VS Code 的 webview api从我的扩展生成的服务器加载内容。它使用指向以下内容的 iframe 来执行此操作localhost
:
import * as vscode from 'vscode';
import * as express from 'express';
const PORT = 3000;
export function activate(context: vscode.ExtensionContext) {
// Spawn simple server
const app = express();
app.get('/', (_req, res) => res.send('Hello VS Code!'));
app.listen(PORT)
context.subscriptions.push(
vscode.commands.registerCommand('myExtension.startPreview', () => {
const panel = vscode.window.createWebviewPanel('myExtension.preview', 'Preview', vscode.ViewColumn.One,
{
enableScripts: true
});
panel.webview.html = `<!DOCTYPE html>
<html lang="en"">
<head>
<meta charset="UTF-8">
<title>Preview</title>
<style>
html { width: 100%; height: 100%; min-height: 100%; display: flex; }
body { flex: 1; display: flex; }
iframe { flex: 1; border: none; background: white; }
</style>
</head>
<body>
<iframe src="http://localhost:${PORT}"></iframe>
</body>
</html>`
}));
}
当扩展程序在本地运行时,这工作正常,但是当我尝试在远程工作区中运行我的扩展程序时,iframe 是空的:
为什么会发生这种情况,我该如何解决?