VSCode не может запустить расширение с помощью baseUrl - PullRequest
0 голосов
/ 03 мая 2019

Обзор проблемы

Я пытаюсь создать расширение 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

Воспроизведение вопроса

  • Клонировать вышеуказанный проект https://github.com/JarrettSpiker/jspiker-so-vscode-baseurl
  • Запуск npm install из корня проекта
  • Запуск npm run compile из корня проекта
  • Открыть в VsCode и запустить конфигурацию «Расширение»
  • Запустить «Показать пример сообщения StackOverflow»

Структура проекта

По сути, я хотел настроить свой проект, как описано в в этом вопросе , поэтому я пошел с рекомендацией "настроить главный выходной каталог для всего составного проекта".

Структура проекта выглядит следующим образом:

.
├── 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, которые прервутся, если я когда-нибудь переместлю файлы вокруг
  • Если это не так, как baseUrl должно работать, может кто-нибудь указать мне хороший пример? С того места, где я сижу, кажется, что baseUrl всегда собирается создавать файлы .js с недопустимым импортом ... что кажется неправильным
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...