安装 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 失败的主要内容,如果未能解决你的问题,请参考以下文章