Как я понимаю из руководство pnpm создает символически связанный .registry.npmjs.org
и другие точки входа под node_modules
. Мой проект находится на typescript
, и у меня есть @types
для набора текста в node_modules
. Но этот @types
есть и в node_modules/.registry.npmjs.org/@types
. Итак, я получаю сообщение об ошибке:
/node_modules/.registry.npmjs.org/@types/jquery/3.3.5/node_modules/@types/jquery/index.d.ts(32,14): error TS2300: Duplicate identifier 'jQuery'.
...а также
/node_modules/@types/jquery/index.d.ts(28,14): error TS2300: Duplicate identifier 'jQuery'.
tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"lib": [
"es5",
"dom",
"es2015.promise"
],
"experimentalDecorators": true,
"sourceMap": true,
"allowSyntheticDefaultImports": true
},
"include": [
"src/**/*"
],
"exclude": [
"node_modules",
"scripts",
"src/contracts"
]
}
Есть идеи, как это решить?
@MattMcCutchen да, я пробовал, но это не помогает ... Еще я пробовал с ним "typeRoots": [ "./node_modules/@types"]
Мне не удалось воспроизвести проблему. tsc --traceResolution
может помочь. Если вы не можете определить проблему по выходным данным, опубликуйте ее в вопросе, и я посмотрю.
@AlexFilatov какую версию машинописного текста вы используете? Я знаю, что у v1 были проблемы с символическими ссылками, но v2 / 3 работает нормально. На самом деле pnpm написан на машинописном тексте, и у нас нет этих проблем с машинописным текстом 2.
@ZoltanKochan "typescript": "^2.8.3",
@ZoltanKochan кажется, что у вас нет этой проблемы, потому что вы используете типизацию и вручную устанавливаете путь к опции include
в tsconfig.json. В моем случае я использую @types вместо него, который устанавливается через npm и помещается в node_modules / @ types
pnpm также использует @types
, см. package.json.
@AlexFilatov есть ли у вас репозиторий на GitHub, в котором воспроизводится проблема?
похоже, что я исправил эту проблему. Это было из-за моего кода. Я продублировал ссылку в моих наборах папок контрактов для кендо, где явно установить импорт на <reference path = "./../../../node_modules/@types/jquery/index.d.ts" />
. Я удалил эту строку, и проблема исчезла
У меня "typeRoots": ["./node_modules/@types"]
работал.
По умолчанию tsc
будет искать типы во всех папках node_modules/@types
.
Вы можете проверить, какие файлы включаются, позвонив в tsc --listFiles
.
Я думаю, поскольку этот файл включен самим typescript
, он также будет включать все файлы из репозитория pnpm node_modules/.pnpm/@types
.
xxx/node_modules/.pnpm/[email protected]/node_modules/typescript/lib/lib.es5.d.ts
В моем случае у меня было несколько версий React, которые читались.
Вы уже установили
"exclude": ["node_modules/.registry.npmjs.org"]
в свой файлtsconfig.json
? Это первое, что я бы попробовал, но я не публикую это как ответ, потому что не очень уверен, что это сработает.