关于Yarn全球安装的更精彩问题的ESLint

时间:2017-06-29 11:43:55

标签: eslint yarnpkg prettier

我正在设置我的ReactJS环境,我正在关注该主题的FrontendMasters课程。

在通过Yarn全局安装 eslint 更漂亮之后,作者运行此命令eslint js\**\*.{js,jsx}并且在他的机器上,一切都很好,但我得到了以下内容:

  

糟糕!有些不对劲! :(

     

ESLint无法找到插件“eslint-plugin-prettier”。出现这种情况的原因有两个:

     
      
  1. 如果全局安装ESLint,请确保全局安装eslint-plugin-prettier。全局安装的ESLint无法找到本地安装的插件。

  2.   
  3. 如果本地安装了ESLint,则可能是插件安装不正确。尝试运行以下命令重新安装:

         

    npm i eslint-plugin-prettier @ latest --save-dev

  4.         

    如果您仍然无法解决问题,请停在https://gitter.im/eslint/eslint与团队聊天。

我试过谷歌,但找不到任何相关内容。为什么会这样?我在Windows 10上,使用最新版本的Yarn(v0.24.6),我的eslintrc.json看起来像这样:

{
  "extends": ["airbnb", "prettier", "prettier/react"],
  "plugins": ["prettier"],
  "parserOptions": {
    "ecmaVersion": 2016,
    "sourceType": "module",
    "ecmaFeatures": {
      "jsx": true
    }
  },
  "env": {
    "es6": true,
    "browser": true,
    "node": true
  }
}

更新

我按照下面的Daydream的建议,虽然我没有安装nvm。但是我确实删除了node_modules文件夹,在ESLint的Gitter聊天之后,我继续全局卸载了ESLintPrettier。然后,我创建了ESLintPrettier devDependencies 。最后我运行yarn命令重新安装所有内容,现在我得到了这个:

Image

注意:该项目是开源的,如果您想亲眼看看,则为on GitHub

7 个答案:

答案 0 :(得分:0)

我也在做这个课程,我在网上看到的第一个提示是通过纱线安装到node_modules来引用eslint的直接路径:

./node_modules/.bin/eslint **/*.{js,jsx} --quiet

但之后,我收到了- Unexpected top-level property "ecmaFeatures"

的错误消息

最终,我为解决问题所做的是擦除node_modules,删除~/.nvm/versions/node/<the version>/lib/node_modules 中的所有内容,但 npmyarn文件夹除外键入yarn以重新安装所有内容。

之后,./node_modules/.bin/eslint **/*.{js,jsx} --quiet工作正常(但我仍然需要指定安装路径。

希望有所帮助!

答案 1 :(得分:0)

我自己也遇到了同样的问题。最新版本的eslint似乎是一个问题,我的是4.2.0。解决这个问题我:

    run: Yarn remove eslint
or
    run: npm uninstall eslint

这将在本地删除它,然后

    run: yarn add eslint@3.19.0 
or  run: npm install eslint@3.19.0

    run: eslint **/*.{js,jsx} --quiet

我的路径可能设置不同,所以与“白日梦国家”一起做这个答案你应该让它工作。我不确定Brian正在使用的是什么版本,我确定如果你拉下他最近的一个回购,它会告诉你,但希望这会引导你朝着正确的方向前进。

答案 2 :(得分:0)

我错过了几个包裹。以下是我修复它的方法。

npm i eslint-config-prettier -save-dev
npm i eslint-config-standard -save-dev
npm i eslint-plugin-node -save-dev
npm i eslint-plugin-promise -save-dev

这是我的package.json

{
  "name": "rpp-react",
  "private": true,
  "scripts": {
    "start": "meteor run"
  },
  "dependencies": {
    "babel-runtime": "^6.20.0",
    "meteor-node-stubs": "~0.2.4",
    "prop-types": "^15.5.10",
    "react": "^15.6.1",
    "react-addons-pure-render-mixin": "^15.6.0",
    "react-dom": "^15.6.1",
    "react-tap-event-plugin": "^2.0.1"
  },
  "devDependencies": {
    "babel-eslint": "^8.0.0",
    "eslint": "^4.7.2",
    "eslint-config-prettier": "^2.5.0",
    "eslint-config-standard": "^10.2.1",
    "eslint-plugin-flowtype": "^2.35.1",
    "eslint-plugin-import": "^2.7.0",
    "eslint-plugin-jsx-a11y": "^5.1.1",
    "eslint-plugin-node": "^5.1.1",
    "eslint-plugin-prettier": "^2.3.1",
    "eslint-plugin-promise": "^3.5.0",
    "eslint-plugin-react": "^7.3.0",
    "eslint-plugin-standard": "^3.0.1",
    "prettier": "^1.7.0"
  }
}

这是我的.eslintrc.json

{
  "extends": [
    "standard",
    "plugin:flowtype/recommended",
    "plugin:react/recommended",
    "prettier",
    "prettier/flowtype",
    "prettier/react",
    "prettier/standard"
  ],
  "plugins": [
    "flowtype",
    "react",
    "prettier",
    "standard"
  ],
  "parserOptions": {
    "sourceType": "module",
    "ecmaFeatures": {
      "jsx": true
    }
  },
  "env": {
    "es6": true,
    "node": true
  },
  "rules": {
    "prettier/prettier": "error"
  }
}

答案 3 :(得分:0)

此处您通过以下方式全局安装了ESLint开发依赖项:

sudo npm install --global eslint-plugin-react

并在项目目录中安装其他开发依赖项。

  • eslint-CONFIG-漂亮
  • eslint-CONFIG-反应
  • eslint-插件-漂亮
  • eslint-插件 - 反应

ESLint无法找到其他开发依赖项。因此,您需要全局安装所有这些开发依赖项以解决此问题。

在项目目录中安装所有这些开发依赖项并使用命令:

~/<project_directory>/node_modules/.bin/eslint  **/*.{js,jsx} --quiet

答案 4 :(得分:0)

这是 UGLY HACK ,但这对我来说只是解决这个问题的唯一方法。 我使用&#34; strace&#34;检查需要哪些模块的工具,我复制了那些文件(请在这一步中保持良好状态!)并且它有效:)

strace eslint --debug Person.js

是的......您必须滚动一些行,直到找到类似的内容:

stat(&#34; /usr/local/share/.config/yarn/global/node_modules/eslint/node_modules/eslint-plugin-prettier" ;, 0x7fff5c139db0)= -1 ENOENT(没有这样的文件或目录)

你需要复制所需的模块......它会起作用。

这些是我必须手动复制的模块列表(在/usr/local/share/.config/yarn/global/node_modules/eslint/node_modules /中)

eslint-config-airbnb
eslint-config-airbnb-base
eslint-plugin-import
eslint-plugin-jsx-a11y
eslint-plugin-prettier
eslint-plugin-prettier/node_modules/fast-diff
eslint-plugin-react

请原谅我丑陋的英语,我正在学习:)。

答案 5 :(得分:0)

将相关性添加到.pre-commit-config.yaml file作为其他相关性

答案 6 :(得分:0)

在您提到的前端大师课程中的steps之后,我遇到了同样的错误(“找不到模块eslint-config-prettier / react”),并且能够通过安装eslint-config-prettier来解决此错误,如下所示,在运行lint脚本之前:

npm install --save-dev eslint-config-prettier

或者,如果使用纱线:

yarn add --dev eslint-config-prettier

请注意,eslint-config-prettier“会关闭所有不必要的规则或可能与更漂亮的规则冲突”。