Не могу найти шутку в подпакете рабочего пространства пряжи

Я пытаюсь реорганизовать проект Typescript в монорепозиторий с несколькими пакетами (с рабочими областями пряжи). В одном из пакетов (packages/compiler) у меня установлена ​​шутка и есть несколько тестов. Раньше они работали, но после рефакторинга я получаю следующее сообщение об ошибке:

Не могу найти имя "это". Вам нужно установить определения типов для

тестовый бегун? Попробуйте npm i @types/jest или npm i @types/mocha

Кажется, я не могу понять, как заставить шутку работать.

У меня jest установлен локально в пакете со всеми тестами. Но если я проверю node_modules/ после yarn install, я смогу увидеть только каталог .bin в packages/compiler/node_modules, а также (ts-) jest, установленный в корне node_modules. Я думаю, мне нужно убедиться, что jest установлен в node_modules моих пакетов (packages/compiler/node_modules), а не в корне. Но я не могу понять, как это сделать (опция nohoist в корневом package.json не работает).

Итак, мой вопрос: как заставить шутку работать в моем подпакете?

Корень package.json:

{
  "name": "pannenkoekjs",
  "private": true,
  "workspaces": [
    "packages/*"
  ],
  "devDependencies": {
    "lerna": "^3.18.4"
  }
}

package.json в packages/compiler:

{
  "name": "@pannenkoekjs/compiler",
  "dependencies": {
    "typescript": "^3.6.2"
  },
  "devDependencies": {
    "@types/jest": "^24.0.23",
    "jest": "^24.9.0",
    "ts-jest": "^24.1.0",
  }
}

И jest.config.js в packages/compiler:

module.exports = {
  preset: "ts-jest",
  testEnvironment: "node",
};

person Wessel van der Linden    schedule 14.11.2019    source источник


Ответы (1)


Видимо, ошибка заключалась не в том, что он не нашел шутки, а в определениях типов. У меня установлен @types/jest, но он установлен в "корневых" node_modules. И в моем tsconfig.json в packages/compiler у меня было следующее:

"typeRoots": [
    "./node_modules/@types",
    "./src/@types",
]

Другими словами; он искал определения типов в локальных node_modules этого пакета (так packages/compiler/node_modules), в то время как определения типов jest были установлены в корень. Поэтому добавление этого в typeRoots устранило мою проблему:

"typeRoots": [
    "./node_modules/@types",
    "../../node_modules/@types",
    "./src/@types",
]
person Wessel van der Linden    schedule 14.11.2019
comment
но что, если я использую пакет также как подмодуль git ?. Явное определение typeroot кажется грязным. почему рабочее пространство пряжи не обнаруживает себя? - person softmarshmallow; 19.10.2020
comment
@softmashmallow В самом деле ... явное определение typeroot не очень хорошее. На данный момент это подойдет (для моего случая использования), но проверьте добавление конфигурации nohoist в корневой каталог проекта package.json для исключения определенных пакетов из подъема. Вы могли бы заставить это работать лучше. - person Paul Brittain; 22.10.2020