ng lint
class TsLintBug {
/**
* Adds x and y.
*/
public add = (x: number, y: number): number => {
return x + y;
};
/**
* Subtracts y from x.
* <strong i="13">@returns</strong> {number}
*/
public subtract = (x: number, y: number): number => {
return x + y;
};
}
с конфигурацией tslint.json
:
"whitespace": [
true,
"check-branch",
"check-decl",
"check-operator",
"check-separator",
"check-type"
],
ERROR: C:/src/.../TsLintBug.ts[10, 3]: missing whitespace
Линтер хочет, чтобы комментарий jsdoc был изменен с /**
на /* *
. Это устраняет проблему, но нарушает работу файла jsdoc.
Другой способ «исправить» эту ошибку tslint:
;
в методе add
.@returns
во втором jsdoc.Обратите внимание: если вы поместите строку @returns
в первый jsdoc и удалите ее из второго jsdoc, ошибка исчезнет.
Удаление строки "check-separator"
из tslint.json также устраняет ошибку (мне потребовалось время, чтобы понять ее).
Ошибок tslint нет.
Я пытался воспроизвести это с помощью [email protected] и 2.5.2
Я не видел ошибок
Можете ли вы воспроизвести это без каких-либо сторонних инструментов, например, запустив tslint -c tslint.json tslintbug.ts
непосредственно из командной строки?
У меня такая же проблема после очистки моих node_modules и переустановки сегодня днем. Удаление check-separator
позволяет ворсу пройти, хотя это не идеально.
tslint 5.6.0
машинописный текст 2.3.4
Редактировать:
Как упоминалось ниже, если я заставлю yarn быть v1.0.2 и переустановить мои node_modules, то линтинг завершится без ошибок.
https://github.com/palantir/tslint/issues/3244#issuecomment -332142831 указывает на то, что при использовании пряжи 1.1.0 может возникнуть проблема.
Вы можете подтвердить, что использовали пряжу для установки tslint?
Да, я использовал пряжу для установки tslint. Я попытаюсь воспроизвести, используя как npm, так и yarn, без сторонних инструментов.
У меня была такая же проблема с пряжей 1.1.0, но не с пряжей 1.0.2 ... Кажется, это проблема пряжи.
Учитывая следующие файлы:
{
"rules": {
"whitespace": [
true,
"check-separator"
]
}
}
class TsLintBug {
/**
* Adds x and y.
*/
public add = (x: number, y: number): number => {
return x + y;
};
/**
* Subtracts y from x.
* <strong i="10">@returns</strong> {number}
*/
public subtract = (x: number, y: number): number => {
return x + y;
};
}
Тогда я не могу воспроизвести ни npm 5.4.2, ни пряжу 1.1.0:
$ rm -rf package.json package-lock.json yarn.lock node_modules/ && npm --version && npm install typescript tslint && npm list && ./node_modules/.bin/tslint --config tslint.json bug.ts && echo "tslint success !"5.4.2
npm WARN saveError ENOENT: no such file or directory, open '/tmp/q/package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open '/tmp/q/package.json'
npm WARN q No description
npm WARN q No repository field.
npm WARN q No README data
npm WARN q No license field.
+ [email protected]
+ [email protected]
added 31 packages in 1.87s
/tmp/q
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ └── [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ └── [email protected] deduped
│ │ │ └── [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├── [email protected] deduped
│ │ │ └── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └── [email protected] deduped
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ └─┬ [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ └─┬ [email protected]
│ └── [email protected] deduped
└── [email protected]
tslint success !
$ rm -rf package.json package-lock.json yarn.lock node_modules/ && yarn add typescript tslint && ./node_modules/.bin/tslint --config tslint.json bug.ts && echo "tslint success !"
yarn add v1.1.0
info No lockfile found.
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
success Saved 31 new dependencies.
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
└─ [email protected]
Done in 2.06s.
tslint success !
Мне удалось воспроизвести эту проблему с немного другим файлом в моем проекте.
``. {машинописный текст}
class TsLintBug {
общественное вычитание (x: число, y: число): число;
/ **
В моем случае я также смог избавиться от ошибки, обновив свой deps. Я попытался определить, какой из них имел значение, но не смог. Если кто-то хочет разобраться в этом, я могу предоставить файлы до / после yarn.lock ...
Если это действительно связано с версией tsutils
это должно быть исправлено после приземления # 3258.
Это все еще очень странно. Я не вносил никаких изменений в tsutils
, связанных с этими сбоями.
Может еще есть разница в установленной версии машинописного текста?
Я попытался заставить версию своего проекта машинописного текста, tsutils и tslint в чистом проекте, но все еще не заметил ошибки. Когда в моем проекте возникла ошибка, utils.forEachTokenWithTrivia
выдавал токен идентификатора для foo (в <strong i="6">@param</strong> foo
), но когда я обновил tsutils, он просто пропустил этот диапазон. Могу только догадываться, что это происходит с определенной конфигурацией пакетов. Я попытался изолировать их в файле блокировки своего проекта, но у меня есть несколько версий некоторых зависимостей, требуемых tslint, поэтому маловероятно, что я обнаружу волшебную комбинацию. Исходя из того, что решило мою проблему, было бы разумно закрыть эту проблему при обновлении tsutils
.
utils.forEachTokenWithTrivia
выдавал токен идентификатора для foo (в<strong i="7">@param</strong> foo
)
Я уже думал, что примерно так и будет. Я не понимаю, почему это могло произойти. Функция исключает все, что связано с JSDoc.
Это возможно, только если что-то не так с перечислением ts.SyntaxKind
...
В любом случае, спасибо @nikklassen за то, что
связанные -> https://github.com/palantir/tslint/issues/3277
В своем проекте я мог сделать следующие наблюдения:
Во всех случаях пряжа получает цутилс 2.11.2.
НО ошибка, похоже, возникает только в том случае, если у меня есть зависимость, которая снова зависит от машинописного текста. В моем случае это был compodoc.
Установлено ли несколько разных версий машинописного текста? Мне нужно знать, какой пакет использует какую версию машинописного текста.
список пряжи v1.1.0
├─ @ compodoc / [email protected]
│ └─ [email protected]
├─ @ compodoc / [email protected]
│ └─ [email protected]
└─ [email protected]
Но tsutils также устанавливает свой собственный машинописный текст в версии 2.5.2, хотя это только devDependency.
Мне не удалось создать минимальное воспроизведение. Ошибочную установку я получил только с первой попытки. После этого в yarn
были еще более странные ошибки.
Но кто-то уже воспроизвел проблему. См. Https://github.com/hexa00/repro-tslint-yarn
Вот проблема в трекере проблем с пряжей: https://github.com/yarnpkg/yarn/issues/4539
Может ли кто-нибудь в этой ветке проверить, что он работает с [email protected]?
Я могу подтвердить, что проблема, которую я видел, которая присутствовала с [email protected] , больше не возникает с
Большой. Давай закроем это.
Если у кого-то по-прежнему возникают похожие проблемы, оставьте комментарий или откройте новый вопрос.
Привет,
У меня сейчас эта проблема.
yarn -v
1.3.2
а также
"devDependencies": {
"tslint": "^5.9.1",
"tslint-eslint-rules": "^4.1.1",
"typescript": "^2.6.1"
},
код, в котором отображается ошибка:
/**
* <strong i="13">@param</strong> {FilterOptions} options "here i got issue"
* <strong i="14">@return</strong> {PropertyDecorator}
* <strong i="15">@constructor</strong>
*/
export function Filter(options: FilterOptions): PropertyDecorator;
Следует отметить, что это происходило только в экспортированных функциях. Другие частные функции в модуле (не экспортируемые) не имели его.
Есть ли здесь какие-нибудь депеши? Ошибка начала появляться после того, как я перешел на пряжу, с [email protected]
не было проблемой.
заранее спасибо
Дэйвид
Это только начало происходить и с нами с yarn 1.3.2, в нашем случае я очень подозреваю, что это может быть связано с тем фактом, что мы начали импортировать частный пакет с правилами tslint в проект. Понижение до 1.0.1 исправляет это, но не до 1.2.1.
Сегодня я обновился до последней машинописной версии до 3.4, и это начало происходить и со мной. я на пряжи 1.15.2
хорошо, решил это. Я сделал yarn cache clean
и переустановил, и теперь он работает.
Это случилось со мной.
Пытался изолировать мой проект от монорепозитория (с помощью lerna) и установить через npm. Ошибка по-прежнему сохраняется.
И npm, и yarn устанавливают tsutils
2.29.0.
import { FormGroup, ValidationErrors } from '@angular/forms';
/**
* <strong i="9">@example</strong>
^... missing whitespace
* const formGroup = this.formBuilder.group({
* field1: '',
* field2: '',
* }, {
* validators: [testValue]
* })
*/
export function testValue(formGroup: FormGroup): ValidationErrors | null {
...
return null;
}
Как только я удаляю оператор импорта, ошибок не сообщается.
Ниже приведены мои текущие настройки.
yarn -v
1.16.0
package.json
{
"devDependencies": {
"tslint": "~5.16.0",
"typescript": "~3.4.5"
}
}
🤖 Бип-буп! 👉 TSLint устарел 👈 и вам следует перейти на typescript-eslint ! 🤖
🔒 Эта проблема заблокирована, чтобы предотвратить дальнейшие ненужные обсуждения. Спасибо! 👋
Самый полезный комментарий
Мне удалось воспроизвести эту проблему с немного другим файлом в моем проекте.
``. {машинописный текст}
class TsLintBug {
общественное вычитание (x: число, y: число): число;
/ **
* /
общественное вычитание (x: число, y: число): число {
вернуть x + y;
}
}
`` ''
Одно из различий между yarn и npm - это установленная версия tsutils. yarn 1.1.0 в настоящее время устанавливает 2.8.2, тогда как npm устанавливает 2.11.1 (оба удовлетворяют требованию tslint "^ 2.8.1"). Когда я обновился до исчезло . К сожалению, я не могу воспроизвести из чистого репо, только в моем довольно большом проекте, но я надеюсь, что это кому-то поможет.