Tslint: Не удается запустить tslint с помощью сценария npm

Созданный на 31 окт. 2016  ·  20Комментарии  ·  Источник: palantir/tslint

Сообщение об ошибке

  • __TSLint version__: 3.15.1
  • __TypeScript version__: 2.0.6
  • __ Запуск TSLint через скрипт__: npm

Если я наберу tslint --project. оно работает:

...
src/core/app.ts[1, 33]: ' should be "
src/core/app.ts[3, 26]: ' should be "
src/core/app.ts[4, 27]: ' should be "
src/core/app.ts[5, 29]: ' should be "
src/core/app.ts[7, 21]: ' should be "
src/core/app.ts[7, 30]: ' should be "
src/core/app.ts[27, 22]: ' should be "
src/core/app.ts[28, 23]: ' should be "
src/core/app.ts[1, 62]: Missing semicolon
src/core/app.ts[3, 35]: Missing semicolon
src/core/app.ts[4, 37]: Missing semicolon
src/server.ts[1, 21]: ' should be "
src/server.ts[2, 17]: ' should be "
src/server.ts[1, 33]: Missing semicolon

Если я запускаю ту же команду со сценарием npm, я получаю:

me@me-ubu-N3355SL:~/project/server$ npm run lint

> [email protected] lint /project/server
> tslint --project '.'

Usage: /usr/bin/nodejs ./node_modules/.bin/tslint [options] [file ...]

Options:
  -c, --config          configuration file                                                      
  -h, --help            display detailed help                                                   
  -i, --init            generate a tslint.json config file in the current working directory     
  -o, --out             output file                                                             
  -r, --rules-dir       rules directory                                                         
  -s, --formatters-dir  formatters directory                                                    
  -e, --exclude         exclude globs from path expansion                                       
  -t, --format          output format (prose, json, verbose)                                      [default: "prose"]
  --test                test that tslint produces the correct output for the specified directory
  -v, --version         current version                                                         

Missing files

npm ERR! Linux 4.8.0-26-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "run" "lint"
npm ERR! node v6.9.1
npm ERR! npm  v3.10.8
npm ERR! code ELIFECYCLE
npm ERR! [email protected] lint: `tslint --project '.'`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] lint script 'tslint --project '.''.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the server package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     tslint --project '.'
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs server
npm ERR! Or if that isn't available, you can get their i...

И это то, что я получил в моем журнале npm-debug.log

13 info lifecycle [email protected]~lint: Failed to exec lint script
14 verbose stack Error: [email protected] lint: `tslint --project '.'`
14 verbose stack Exit status 1
14 verbose stack     at EventEmitter.<anonymous> (/usr/lib/node_modules/npm/lib/utils/lifecycle.js:255:16)
14 verbose stack     at emitTwo (events.js:106:13)
14 verbose stack     at EventEmitter.emit (events.js:191:7)
14 verbose stack     at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/lib/utils/spawn.js:40:14)
14 verbose stack     at emitTwo (events.js:106:13)
14 verbose stack     at ChildProcess.emit (events.js:191:7)
14 verbose stack     at maybeClose (internal/child_process.js:877:16)
14 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
Question

Самый полезный комментарий

Я только что подтвердил, что если ошибок lint нет, выполнение завершается нормально.

Я думаю, что вам следует поместить большое предупреждение в readme репозитория для этого, потому что большинство людей, скорее всего, запустят tslint с помощью сценария npm и запутаются с ошибками, как и я.

Спасибо большое за вашу помощь. ;)

Все 20 Комментарий

вы можете попробовать запустить tslint --project '.' в командной строке?
попробуйте отредактировать файл package.json, чтобы не использовать одинарные кавычки?
он работает с абсолютным путем?

tslint --project '.' работает в командной строке.
"lint": "tslint --project .", this и "lint": "tslint --project '.'", не работают с npm run lint

Я использовал pwd, чтобы определить полный путь к моему проекту, а также попробовал:
npm run lint со сценарием lint как "lint": "tslint --project fullpath/", и это тоже не сработало.

Я только что заметил, что в тексте справки нет --project . Вы используете старую версию tslint при работе с npm, которая не поддерживает эту опцию. Я предполагаю, что у вас одна версия установлена ​​глобально, а другая - в node_modules

@ nchen63 Я подтвердил, что это не так.

Нашел что-то новое, и это было очень странно

root@.../.../...# npm install typescript -g
/usr/bin/tsc -> /usr/lib/node_modules/typescript/bin/tsc
/usr/bin/tsserver -> /usr/lib/node_modules/typescript/bin/tsserver
/usr/lib
└── [email protected] 

root@.../.../...# npm install -g tslint
/usr/bin/tslint -> /usr/lib/node_modules/tslint/bin/tslint
/usr/lib
├── [email protected] 
└── UNMET PEER DEPENDENCY typescript@>=1.7.3

@ bertolo1988, который выглядит как https://github.com/palantir/tslint/issues/1003

@ bertolo1988 Попробуйте изменить свой lint-скрипт на npm -v и посмотрите, какая версия написана.

@ nchen63

npm run lint
> npm -v

дает: 3.10.8, то же самое, что npm -v

Обратите внимание, что люди с # 1003 все еще могут использовать tslint ... я не могу.

Причина, по которой я спрашиваю, состоит в том, что вы указали 3.15.1 в своем отчете об ошибке. флаг --project был представлен в 3.14.0

ах, извините, вы можете запустить tslint -v , а не npm -v в своем скрипте

3.15.1

ну, я не знаю, что сказать. В тексте справки нет опции --project , поэтому что-то не так с версией

Я не видел такой проблемы, но я могу предположить только следующие варианты, которые нужно попробовать сначала:

  1. Во всем мире у вас есть 3.15.1 , но локальная версия ниже, 3.14.0 (НПЕ скрипты снабдите вашу местный node_modules папки до PATH переменного, так что может быть различие).

    • Чтобы убедиться, что local в порядке, попробуйте ./node_modules/.bin/tslint -v и ./node_modules/.bin/tslint --project "." в консоли.

  2. Попробуйте использовать двойные кавычки ( "lint": "tslint --project \".\"" ) вместо одинарных кавычек в скриптах npm.
  3. Попробуйте "lint": "tslint --project \"tsconfig.json\"" в скриптах npm.
  4. Попробуйте установить последнюю версию TSLint для разработчиков.

    • Удалить модули узла

    • npm i typescript<strong i="27">@2</strong> tslint@next

    • Обновите скрипт npm до "lint": "tslint --project \".\""

      - npm run lint

Я удалил свою глобальную установку. Теперь я не могу запустить tslint на своей консоли. Я установил его локально, и версия внутри - "_id": "[email protected]", .

Если я попытаюсь запустить tslint -v на своей консоли, это не удастся. Это нормально, я ожидаю этого, так как я не установил его глобально.

Если я установлю сценарий npm, например "lint":"npm -v" я получу:

me @ me-ubu-N55SL : ~ / path / sticky-notes $ npm запустить lint
[email protected] lint / path / sticky-notes
tslint -v
3.15.1

Я думаю, что только глобальная установка должна позволить мне запустить tslint. Установленный как модуль npm, он будет доступен только с помощью require / import.

ВАЖНО: запуск tslint в глобальном масштабе работает хорошо, при локальной установке и запуске в качестве сценария npm я получаю эту ошибку

@ bertolo1988 теперь работает как положено?
Если да - рад, что ваша проблема решена.

@IllusionMH Нет, погоди. Я немного лучше "изолировал" проблему. Проблема все еще существует. Проверьте мой предыдущий комментарий.

@ bertolo1988, если я правильно понимаю - вам удалось установить 3.15.1 в проект (что было основным случаем проблемы с флагом --project ).
Я проверил ссылку с выводом журнала из вашего предыдущего комментария, и все работает, как ожидалось.

Вкратце - это всего лишь подробная реакция NPM на код выхода при возникновении ошибок lint.
Для получения дополнительных сведений и параметров проверьте эту ветку https://github.com/palantir/tslint/issues/1704.

PS Чтобы убедиться, что вы используете ту же версию пакета, что и ваши инструменты сборки и CI - я лично предпочитаю использовать сценарии npm или использовать пакеты из локальных установок, например ./node_modules/.bin/tslint --project "." в вашем случае

Я только что подтвердил, что если ошибок lint нет, выполнение завершается нормально.

Я думаю, что вам следует поместить большое предупреждение в readme репозитория для этого, потому что большинство людей, скорее всего, запустят tslint с помощью сценария npm и запутаются с ошибками, как и я.

Спасибо большое за вашу помощь. ;)

Просто потратил полчаса на борьбу с этой проблемой. Вам действительно стоит добавить где-нибудь предупреждение об этом варианте использования, потому что теперь действительно стандартно вызывать такие сценарии с использованием npm run ... .

Просто столкнулся с этой проблемой, и пришлось откопать ее, отправив сообщение для потомков. Мне лично не нравилось, что мой скрипт npm дает сбой при сбое линтинга, поэтому я внес следующие изменения:

"lint:be": "./node_modules/.bin/tslint --project 'server' -t stylish || echo",

Как написано, это никогда не подведет. Используйте с осторожностью. Я лично просто не мог вынести огромных сообщений об ошибках NPM.

В качестве альтернативы использование yarn вместо npm также «устраняет» эту проблему.

"lint": "yarn run lint:be",
"lint:be": "./node_modules/.bin/tslint --project 'server' -t stylish",

🤖 Бип-буп! 👉 TSLint устарел 👈 и вам следует перейти на typescript-eslint ! 🤖

🔒 Эта проблема заблокирована, чтобы предотвратить дальнейшие ненужные обсуждения. Спасибо! 👋

Была ли эта страница полезной?
0 / 5 - 0 рейтинги