我正在使用 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'
最佳答案
我正在使用 Node 7.10.0
并且遇到了同样的问题。我找到了 an issue logged on it's repo其中 mmoutenot发布了一个有趣的回复,这让我开始思考,所以我进一步调查并找到了解决方案!
Husky假设大家都用nvm来管理 Node 版本,在NVM_DIR下找(设置为 $HOME/.nvm
)或者如果安装了 brew BREW_NVM_DIR (设置为 /usr/local/opt/nvm
)
如果任一路径存在,则使用 load_nvm 加载 Node 版本.
当我最初开始使用 Node 时,我确实使用了 nvm 但后来转向使用 n并且没有意识到 .nvm 没有在主目录下被清理所以它指向旧版本的 Node (0.12.7
) - 这导致了上面提到的错误。
如果您仍在使用 nvm 来管理 Node 版本,请确保您更新到支持 ES6 功能的 Node 版本(在这种情况下为 const
)。
如果您不使用 nvm,请确保 nvm 在上述路径中不可用。在这种情况下,Husky 最终使用当前版本(即在您的情况下为 6.10.0
)
或者您可以尝试 mmoutenot 的解决方案在 husky issue 上提到
关于node.js - 赫斯基给出错误 SyntaxError : Use of const in strict mode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43932038/