Я создаю приложение, используя машинописный текст, узел и электрон.
Я использую jquery в приложении и установил пакет @ types / jquery, чтобы иметь подсказки intellisense.
Затем я создал тест с использованием мокко и спектрона. Spectron использует webdriverio и предоставляет свой API через некоторые свойства. Мне нужно использовать эти свойства, поэтому я установил @ types / webdriverio, чтобы иметь подсказки intellisense.
Теперь, когда я запускаю инструмент tsc для компиляции проекта, я получаю следующие ошибки:
node_modules/@types/jquery/index.d.ts(36,15): error TS2451: Cannot redeclare block-scoped variable '$'.
node_modules/@types/webdriverio/index.d.ts(1898,18): error TS2451: Cannot redeclare block-scoped variable '$'.
node_modules/@types/webdriverio/index.d.ts(1899,18): error TS2451: Cannot redeclare block-scoped variable '$'.
Проблема в том, что оба пакета объявляют глобальную переменную $. Вы также можете проверить это на их страницах npm в разделе «Глобальные значения»:
https://www.npmjs.com/package/@types/jquery
https://www.npmjs.com/package/@types/webdriverio
Я не понимаю, почему tsc пытается скомпилировать их вместе, если я не использую jquery и webdriverio в одном и том же файле .ts?
Кроме того, даже если я закомментирую тест, поэтому я не буду ссылаться на webdriverio в любом месте, когда я запускаю tsc, я получаю те же ошибки. Вероятно, tsc компилирует все исходники в node_modules / @ types вместе. Фактически, если я удалю папку node_modules / @ types / webdriverio и снова запущу tsc, я не получу ошибки (конечно, пока я буду комментировать тестовый код).
Это мой tsconfig.json, который находится в корне проекта:
{
"compilerOptions": {
"target": "ES6",
"module": "commonjs",
"sourceMap": false,
"inlineSourceMap": true,
"inlineSources": true,
"declaration": false,
"outDir": "dist"
},
"include": [
"src/**/*"
]
}
Весь мой исходный код находится в каталоге src. Тесты находятся в src / test.
Могу ли я сделать какую-либо конфигурацию, чтобы во время компиляции типы webdriverio и jquery были разделены? Кроме того, я видел несколько примеров кода, написанных на js, где они используются вместе: это невозможно в машинописном тексте?