安装 angular2-notifications 后运行 lint 失败

Posted

技术标签:

【中文标题】安装 angular2-notifications 后运行 lint 失败【英文标题】:Running lint fails after installing angular2-notifications 【发布时间】:2017-11-01 23:14:17 【问题描述】:

我最近使用 Angular-CLI 创建了一个新的 Angular4 项目。

我遇到的问题是在安装 angular2-notifications 后,运行 ng lint 命令时出现错误。

错误

加载 C:\Users\Gabriel\Documents\GitHub\Go-NoGo\GoNoGo\node_modules\angular2-notifications\tslint.json 失败:找不到自定义规则目录:C:\Users\Gabriel\Documents\GitHub \Go-NoGo\GoNoGo\node_modules\angular2-notifications\node_modules\codelyzer

堆栈跟踪:

at new FatalError (C:\Users\Gabriel\Documents\GitHub\Go-NoGo\GoNoGo\node_modules\tslint\lib\error.js:40:23)
at Object.findConfiguration (C:\Users\Gabriel\Documents\GitHub\Go-NoGo\GoNoGo\node_modules\tslint\lib\configuration.js:47:15)
at files.forEach (C:\Users\Gabriel\Documents\GitHub\Go-NoGo\GoNoGo\node_modules\@angular\cli\tasks\lint.js:36:50)
at Array.forEach (native)
at lintConfigs.map (C:\Users\Gabriel\Documents\GitHub\Go-NoGo\GoNoGo\node_modules\@angular\cli\tasks\lint.js:30:19)
at Array.map (native)
at Class.run (C:\Users\Gabriel\Documents\GitHub\Go-NoGo\GoNoGo\node_modules\@angular\cli\tasks\lint.js:21:14)
at Class.run (C:\Users\Gabriel\Documents\GitHub\Go-NoGo\GoNoGo\node_modules\@angular\cli\commands\lint.js:45:25)
at Class.Command.validateAndRun (C:\Users\Gabriel\Documents\GitHub\Go-NoGo\GoNoGo\node_modules\@angular\cli\ember-cli\lib\models\command.js:128:15)
at C:\Users\Gabriel\Documents\GitHub\Go-NoGo\GoNoGo\node_modules\@angular\cli\ember-cli\lib\cli\cli.js:92:22

我已针对此问题求助于 Google,但没有任何运气。我去过GitHub repo,也没有运气。

然后我进入了 angular2-notifications 包的实际 tslint.json 文件。

我在顶部看到这个:

"rulesDirectory": [
    "node_modules/codelyzer"
],

当我删除这 3 行时,ng lint 命令有效。

我的问题是,我在这里遗漏了什么吗?我需要这个命令才能工作,我认为修改包不是一个可以接受的解决方案。这是我应该向他们报告的包本身的错误吗?

谢谢

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,我通过为 node_modules 提供正确的路径找到了解决方案。

我的意思是我的项目是一个带有 Angular 的 ASP.net - 其中目录结构是自定义的,并且“package.json”保留在 Angular 应用程序之外,因此 node_modules 也位于存在“package.json”的同一目录中。

所以我可以通过将 tslint.ts 中的“node_modules”路径更改为来解决这个问题

"rulesDirectory": [
    "./../node_modules/codelyzer"
],

【讨论】:

【参考方案2】:

我收到消息的原因是缺少node_modules 目录。运行npm install后,问题就消失了。

【讨论】:

【参考方案3】:

从 angular-cli.json 的 lint 配置中排除 node_modules:

"lint": [
    
      "project": "src/tsconfig.app.json",
      "exclude": "**/node_modules/**/*"
    ,
    
      "project": "src/tsconfig.spec.json",
      "exclude": "**/node_modules/**/*"
    ,
    
      "project": "e2e/tsconfig.e2e.json",
      "exclude": "**/node_modules/**/*"
    ]

angular2-notifications 项目显然不应该为用户破坏 ng lint。尽管如此,我认为说一个项目不应该尝试对不应该编辑的代码进行 lint 也有点公平。

【讨论】:

angular-cli.json 文件已在 Angular 版本 6 中重命名/替换为 angular.json。文件的格式也发生了变化。见***.com/a/50184006/7769052 在我的情况下,我们正在使用自定义的角度框架,并且 angular.json 文件不存在(也没有 angular-li.json)然后在哪里添加这些配置

以上是关于安装 angular2-notifications 后运行 lint 失败的主要内容,如果未能解决你的问题,请参考以下文章

MySQL免安装版与安装版区别

下载完安装包怎么安装

分清全局安装与本地安装

安装一个软件提示,该安装包未包含任何证书,安装失败,怎么解决

把两个安装文件做成一个安装包,怎么做

myeclipse怎么安装怎样安装myeclipse