赫斯基给出错误SyntaxError:在严格模式下使用const

时间:2017-05-12 07:38:28

标签: node.js git stylelint husky lint-staged

我正在使用HuskyLint-stagedStylelint

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

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

OS - 最新的OSX

节点 - 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'

2 个答案:

答案 0 :(得分:6)

我使用的是节点7.10.0并遇到了同样的问题。我发现an issue logged on it's repo mmoutenot发布了一个有趣的回复让我思考,所以我进一步研究并找到了解决方案!

赫斯基假设每个人都使用 nvm 来管理节点版本,并在NVM_DIR设置为$HOME/.nvm )下查找节点版本,或者如果安装了brew BREW_NVM_DIR设为/usr/local/opt/nvm

如果存在任一路径,则使用load_nvm加载节点版本。

当我最初开始使用Node时,我确实使用了 nvm ,但后来继续使用n并且没有意识到 .nvm 尚未在主目录下清理,因此它指向较旧版本的节点(0.12.7) - 这导致上述错误。

如果您仍在使用nvm来管理节点版本,请确保您更新到支持ES6功能的节点版本(在这种情况下为const)。

如果您不使用nvm,请确保 nvm 在上述路径中不可用。在这种情况下,赫斯基最终使用当前版本(例如,在您的情况下为6.10.0

或者,您可以尝试mmoutenot

上提到的husky issue解决方案

答案 1 :(得分:0)

我猜你还需要将一些文件传递给lint for stylelint:

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

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