Подтвердить что ты не робот

Husky дает ошибку SyntaxError: использование константы в строгом режиме

Я использую Husky с Lint-staged и Stylelint

  "scripts": {
    "precommit": "lint-staged",

  },
  "lint-staged": {
    "*.scss": ["stylelint --syntax scss"
    ]
  },

ОС - последний OSX

Node - 6.10.0

NPM - 3.10.00

Я получаю эту ошибку на git commit

> husky - npm run -s precommit

/Users/jitendravyas/app/node_modules/lint-staged/src/index.js:6
const path = require('path')
^^^^^
SyntaxError: Use of const in strict mode.
    at exports.runInThisContext (vm.js:73:16)
    at Module._compile (module.js:443:25)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object.<anonymous> (/Users/jitendravyas/app/node_modules/lint-staged/index.js:2:1)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)

> husky - pre-commit hook failed (add --no-verify to bypass)
> husky - to debug, use 'npm run precommit'
4b9b3361

Ответ 1

Я использовал node 7.10.0 и имел ту же проблему. Я нашел проблема, зарегистрированная на нем repo, где mmoutenot отправил интересный ответ, который заставил меня задуматься, поэтому я изучил его дальше и нашел решение!

Husky предполагает, что каждый использует nvm для управления версиями node и ищет его под NVM_DIR (установлен на $HOME/.nvm) или если установлен с brew BREW_NVM_DIR ( установлен на /usr/local/opt/nvm)

если любой путь существует, чем загружает версию node, используя load_nvm.

Когда я начал работать с node, я использовал nvm, но позже перешел к использованию n и не понимал, что .nvm не был очищен в домашнем каталоге, поэтому он указывал на более старую версию node (0.12.7) - что вызвало вышеупомянутую ошибку.

Если вы все еще используете nvm для управления версиями node, убедитесь, что вы обновили версию node, которая поддерживает функции ES6 (const в этом случае).

Если вы не используете nvm, убедитесь, что nvm недоступен на вышеупомянутых путях. Husky заканчивает использование текущей версии в этом случае (т.е. 6.10.0 в вашем случае)

В качестве альтернативы вы можете попробовать решение, которое mmoutenot, упомянутое в хриплый вопрос

Ответ 2

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

"scripts": {
  "precommit": "lint-staged",

},
"lint-staged": {
  "*.scss": ["stylelint \"**/*.scss\" --syntax scss"
  ]
},