VSCode无法使用baseUrl

时间:2019-05-02 23:17:45

标签: typescript visual-studio-code

问题概述

我正在尝试创建具有多个typescript project references的vscode扩展,并在运行扩展时遇到以下错误:

Activating extension `Jarrett Spiker.jspiker-so-vscode-baseurl` failed: Cannot find module 'common/commonFile'
extensionHostProcess.js:457

Here is the error stack:  Error: Cannot find module 'common/commonFile'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:602:15)
    ...

一切正常,并且VSCode在源代码中没有发现任何问题。

这是我创建的一个示例项目,用于复制此问题https://github.com/JarrettSpiker/jspiker-so-vscode-baseurl

再现问题

项目结构

实际上,我想按照this question中的描述设置项目,因此我建议“为整个复合项目设置主输出目录”。

项目结构如下:

.
├── client
│   ├── package-lock.json
│   ├── package.json
│   ├── src
│   │   └── extension.ts
│   └── tsconfig.json
├── common
│   ├── package-lock.json
│   ├── package.json
│   ├── src
│   │   └── commonFile.ts
│   └── tsconfig.json
├── out
│   ├── client
│   │   ├── extension.d.ts
│   │   ├── extension.js
│   │   └── extension.js.map
│   └── common
│       ├── commonFile.d.ts
│       ├── commonFile.js
│       └── commonFile.js.map
├── package-lock.json
├── package.json
└── tsconfig.json

我想避免混淆相对路径,因此我尝试使用baseUrl指向out的根,并进行paths查找以在适当的位置查找node_modules。为方便参考,以下是tsconfig.json子项目的client

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es6",
        "lib": ["es6"],
        "composite": true,
        "sourceMap": true,
        "rootDir": "src",
        "tsBuildInfoFile" : "./client.tsbuildinfo",
        "strict": true,
        "noImplicitReturns": true,
        "outDir": "../out/client/",
        "baseUrl": "../out/",
        "paths": {
            "*" : [
                "*",
                "../client/node_modules/*"
            ]
        }
    },
    "include": [
        "src"
    ],
    "exclude": [
        "node_modules",
        ".vscode-test"
    ],
    "references": [
        { "path": "../common" }
    ]
}

问题

  • 我将能够使该项目结构正常工作,还是我应该咬一下子弹,并且在导入中只有一堆../../out/common/commonFile类型的路径,如果我四处移动文件,这些路径会损坏< / li>
  • 如果这不是baseUrl的工作方式,那么有人可以给我指出一个很好的例子吗?从我坐着的地方来看,baseUrl似乎总是要用无效的导入来创建.js文件……这似乎是不对的

0 个答案:

没有答案