VSCode扩展编写和打开文件

13

我的需求其实很简单,我想要写一个文件并在 VSCode 中打开它。但是我无法让它正常工作:

var content = rec[rt.fields[field]];
var filePath = path.join(vscode.workspace.rootPath, selected.label + '.' + field);
fs.writeFileSync(filePath, content, 'utf8');

var openPath = vscode.Uri.parse(filePath);
vscode.workspace.openTextDocument(openPath).then(doc => {
  vscode.window.showTextDocument(doc);
});

我收到了以下错误消息,但不知道它意味着什么:

无法打开c:%5CUsers%5Cmak%5C.sneditor%5Csoftpointdev1.service-now.com%5CRMCostPlanHelper.js。详细信息:没有名为“c:%5CUsers%5Cmak%5C.sneditor%5Csoftpointdev1.service-now.com%5CRMCostPlanHelper.js”的模型,也没有解析程序来处理方案“c”。

2个回答

17

我发布这个问题后,立刻就找到了答案^^

你需要使用vscode.Uri.file而不是vscode.Uri.parse

const content = 'exampleContent';
const filePath = path.join(vscode.workspace.rootPath, 'fileName.extension');
fs.writeFileSync(filePath, content, 'utf8');

const openPath = vscode.Uri.file(filePath);
vscode.workspace.openTextDocument(openPath).then(doc => {
    vscode.window.showTextDocument(doc);
});

1
工作正常!但是rootPath已经过时了。我该如何修复它? - Chris

13

我也遇到了类似的问题。你可以通过以下方法解决问题:

var content = rec[rt.fields[field]];
var filePath = path.join(vscode.workspace.rootPath, selected.label + '.' + field);
fs.writeFileSync(filePath, content, 'utf8');

var openPath = vscode.Uri.parse("file:///" + filePath); //A request file path
vscode.workspace.openTextDocument(openPath).then(doc => {
  vscode.window.showTextDocument(doc);
});

rootPath已经被弃用。有什么想法如何解决这个问题? - Chris
1
请使用 workspaceFolders 属性。rootPath 只能提供第一个条目,因此您可以使用 workspaceFolders[0].uri。更多详细信息请参见 文档 - jloh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接