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'
Ответы
Ответ 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"
]
},