3

我正在使用带有Lint-stagedStylelint的Husky

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

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

操作系统 - 最新的 OSX

节点 -6.10.0

新PM -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'
4

2 回答 2

6

我正在使用节点7.10.0并且遇到了同样的问题。我在它的 repo 上发现了一个问题mmoutenot发布了一个有趣的回复,这让我开始思考,所以我进一步研究它并找到了解决方案!

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

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

当我最初开始使用 Node 时,我确实使用了 nvm,但后来转而使用n,并没有意识到.nvm没有在主目录下被清理,所以它指向的是旧版本的 node( 0.12.7)——它导致上述错误。

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

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

或者,您可以尝试mmoutenot哈士奇问题上提到的解决方案

于 2017-05-24T21:23:54.540 回答
0

我猜您还需要将一组文件传递给 lint 以获取 stylelint:

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

},
"lint-staged": {
  "*.scss": ["stylelint \"**/*.scss\" --syntax scss"
  ]
},
于 2017-05-13T07:46:05.610 回答