首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >已阅读在摩纳哥编辑器中从package.json键入名称

已阅读在摩纳哥编辑器中从package.json键入名称
EN

Stack Overflow用户
提问于 2017-11-28 00:11:41
回答 1查看 583关注 0票数 0

我在向名称以@符号开头的Monaco Editor添加自定义类型定义时遇到了问题。这里有一个例子,可以说明我想要实现的目标:

代码语言:javascript
运行
复制
monaco.languages.typescript.typescriptDefaults.setCompilerOptions({
    target: monaco.languages.typescript.ScriptTarget.ES2016,
    allowNonTsExtensions: true,
    module: monaco.languages.typescript.ModuleKind.CommonJS,
    noEmit: true,
    typeRoots: ["node_modules/@types"]
});

monaco.languages.typescript.typescriptDefaults.addExtraLib(
    "export class Foo { }",
    "node_modules/@types/@my-module/sub/index.d.ts"
);

monaco.editor.create(document.getElementById("container"), {
    model: monaco.editor.createModel(
        `import * as x from "@my-module/sub"`, 
        "typescript",
        new monaco.Uri("main.ts")
    )
});

这不起作用,因为我的自定义模块名为@my-module/sub。如果在本例中,我用my-module/sub替换了模块名称,那么一切都会按预期进行,并且我会获得智能感知。你知道Monaco是否支持这个场景吗?如果支持,那么正确的方式是什么?显然,更改我的模块名称是不可行的。

您可以在Monaco Playground中尝试此代码片段。

EN

回答 1

Stack Overflow用户

发布于 2017-11-28 19:18:29

我设法找到了一个解决方案,只需要删除typeRoots编译器选项,而使用node_modules前缀:

代码语言:javascript
运行
复制
monaco.languages.typescript.typescriptDefaults.setCompilerOptions({
    target: monaco.languages.typescript.ScriptTarget.ES2016,
    allowNonTsExtensions: true,
    module: monaco.languages.typescript.ModuleKind.CommonJS,
    noEmit: true
});

monaco.languages.typescript.typescriptDefaults.addExtraLib(
    "export class Foo { }",
    "node_modules/@my-module/sub/index.d.ts"
);

monaco.editor.create(document.getElementById("container"), {
    model: monaco.editor.createModel(
        `import * as x from "@my-module/sub"`, 
        "typescript",
        new monaco.Uri("main.ts")
    )
});
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47515256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档