【问题标题】:Cannot find module 'eslint-plugin-angular'找不到模块“eslint-plugin-angular”
【发布时间】:2015-12-17 10:40:45
【问题描述】:

我正在尝试将 ESLint 集成到我的项目中,但在运行 $ eslint *.js 时遇到了错误:“找不到模块 'eslint-plugin-angular'”。 p>

我可以让它运行的唯一方法是全局安装 eslint-plugin-angular,但这似乎是错误的(除非我错过了什么??)。

我在跑步:

  • 节点 v0.12.7
  • npm 3.3.4
  • eslint v1.5.0
  • eslint-plugin-angular 0.12.0

ESLint 是全局安装的。

我的package.json 文件包含以下条目:

  • “eslint”:“^1.5.0”,
  • “eslint-plugin-angular”:“^0.12.0”,

我有 $ rm -rf node_modules 并重新运行 $ npm install 以确保不存在某种 npm 依赖问题或损坏。我还验证了node_modules 中的目录权限,以确保可以访问。

我的.eslintrc 包含:

{
    "plugins": [
        "angular"
    ],
    "rules": {
    "angular/ng_controller_name": [
        2,
        "/[A-Z].*Controller$/"
    ],
    "quotes": [
        2,
        "single"
    ]
    },
        "globals": {
        "angular": true
    }
}

我在这里缺少什么?谢谢! 附言。我确实在 github 上开了一张票:https://github.com/Gillespie59/eslint-plugin-angular/issues/222——只是想知道 Stack 社区中是否有人遇到过这个问题。

【问题讨论】:

    标签: eslint


    【解决方案1】:

    在这里找到答案:http://eslint.org/docs/user-guide/configuring#configuring-plugins

    “注意:全局安装的 ESLint 实例只能使用全局安装的 ESLint 插件。本地安装的 ESLint 可以确保本地和全局安装的 ESLint 插件。”

    这属于阅读文档中的细则。 :/

    有两种方法可以解决这个问题:

    (1) 全局安装插件。我不是这方面的特别粉丝,因为我有多个客户端项目位于不同版本的依赖项上,我不一定将它们都升级到相同的版本。

    (2) 在本地安装插件并将脚本添加到您的package.json 文件中:

    {
        ... other stuff
        "scripts": {
            "eslint": "eslint",
            "lint": "eslint. "
        }
        ... other stuff
    }
    

    (如果您对此完全陌生,请记住 ... other stuff 并不是您在 package.json 文件中真正想要的...)

    通过此设置,我可以使用npm run eslint 来使用eslint,并且我可以使用npm run lint 来实际检查我的项目。

    您可以在此处找到有关 package.json 文件的 scripts 字段的文档:https://docs.npmjs.com/misc/scripts

    【讨论】:

    • 即全局安装eslint-plugin-angular
    • 在提供示例时,我喜欢对任何行使用注释,例如` ... other stuff`
    【解决方案2】:

    如果您按照指南告诉您使用 npm install -g eslint(这是安装 ESLint 的推荐方法),然后立即告诉您使用 eslint --init 创建项目的配置。问题是eslint --init 安装您需要的软件包,但它会在本地安装它们,即使它是从全局安装的eslint 运行的。直到我尝试在 Emacs 中编辑文件并且 flycheck 报告 ESLint 错误:

    Error: Failed to load plugin react: Cannot find module 'eslint-plugin-react'
        at Function.Module._resolveFilename (module.js:325:15)
        at Function.Module._load (module.js:276:25)
    [...]
    

    我喜欢同时允许全局安装和本地安装。我可能会将全局代码用于我仍想检查但不属于任何特定项目的实验代码,以及具有更具体需求的本地安装。所以我创建了一个存储为~/bin/eslint 的脚本。由于~/bin 早于我的PATH,因此使用此脚本代替任何全局安装eslint

    #!/bin/sh
    
    # Find the top of the code hierarchy, and move there.
    prefix=`npm prefix`
    [ -n $prefix ] && cd $prefix
    
    # Execute the local eslint if it exists.    
    local_eslint=./node_modules/.bin/eslint
    [ -x $local_eslint ] && exec $local_eslint "$@"
    
    # If not, execute the global one.
    exec /path/to/global/eslint "$@"
    

    (对于那些不知道的人,exec 是最终的。如果第一个 exec 被执行,那么后面的任何内容都不会执行。)

    此脚本假定项目结构适合npm(即npm prefix 可以找到package.json)。它必须适应其他情况。

    我的全局 eslint 位于不寻常的位置,调整脚本以将其指向您安装它的位置。

    【讨论】:

      猜你喜欢
      • 2023-03-26
      • 2018-05-26
      • 2019-06-28
      • 1970-01-01
      • 2021-07-01
      • 2019-07-30
      • 1970-01-01
      • 2020-05-20
      • 2020-04-26
      相关资源
      最近更新 更多