程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了不能在另一个项目中使用本地修改的 Angular 模块大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决不能在另一个项目中使用本地修改的 Angular 模块?

开发过程中遇到不能在另一个项目中使用本地修改的 Angular 模块的问题如何解决?下面主要结合日常开发的经验,给出你关于不能在另一个项目中使用本地修改的 Angular 模块的解决方法建议,希望对你解决不能在另一个项目中使用本地修改的 Angular 模块有所启发或帮助;

我在 ng serve 时收到以下错误(我已经尝试清除缓存、重新安装所有模块并重新启动服务器)

Error: ../../../../angular/ngx-charts-master/ngx-charts-master/dist/swimlane/ngx-charts/lib/ngx-charts.module.d.ts:1:22 - error NG6002: Appears in the NgModule.imports of AppModule,but Could not be resolved to an NgModule class.

This likely means that the dependency which declares NgxChartsModule has not been processed correctly by ngcc.

完整的上下文背景是我已经修改了源代码并发布了一个 pull request 但我不知道维护者是否/何时会接受它,我想至少在此期间使用修改后的模块.

当然,我已经通过内部演示应用程序使用它们测试了这些更改(有一些微不足道的临时更改),并且一切正常。然后我用

构建dist
ng build @swimlane/ngx-charts

并且它在 dist 文件夹 /dist/swimlane/ngx-charts/ 中产生了它的输出,我试图从中导入,如上所示,在开头

进一步尝试...

我已将导入重写为

import { NgxChartsModule } from '../../../../../../angular/ngx-charts-master/ngx-charts-master/dist/swimlane/ngx-charts';

我删除了 package.Json 中的标准条目并从我的本地文件夹中安装了模块

"@swimlane/ngx-charts": "file:../../../../angular/ngx-charts-master/ngx-charts-master/dist/swimlane/ngx-charts",

然后我按照说明安装了开发依赖项

"d3-array": "^2.9.1","d3-brush": "^2.1.0","d3-color": "^2.0.0","d3-format": "^2.0.0","d3-hIErarchy": "^2.0.0","d3-interpolate": "^2.0.1","d3-scale": "^3.2.3","d3-SELEction": "^2.0.0","d3-shape": "^2.0.0","d3-time-format": "^3.0.0","d3-Transition": "^2.0.0"

(从模块存储库的内部库中的项目 Json 复制)但 ng serve 仍然失败

Error: ../../../../angular/ngx-charts-master/ngx-charts-master/dist/swimlane/ngx-charts/lib/area-chart/area-chart.component.d.ts:2:29 - error TS7016: Could not find a declaration file for module 'd3-shape'. 'F:/ApPL/angular/ngx-charts-master/ngx-charts-master/dist/swimlane/ngx-charts/node_modules/d3-shape/dist/d3-shape.Js' implicitly has an 'any' type.
  Try `npm i --save-dev @types/d3-shape` if it exists or add a new declaration (.d.ts) file containing `declare module 'd3-shape';`

2 import { Curvelinear } from 'd3-shape';
                              ~~~~~~~~~~


Error: ./src/main.ts
Module build Failed (from ./node_modules/@ngtools/webpack/src/ivy/index.Js):

注意

我没有提到,但现在我怀疑来自 npm run build:lib --prod 的这些警告与问题相关

√ Compiling TypeScript sources through NGC
√ Bundling to FESM2015
/ Bundling to UMDWARNING: No name was provIDed for external module 'd3-SELEction' in output.globals – guessing 'd3SELEction'
WARNING: No name was provIDed for external module 'd3-brush' in output.globals – guessing 'd3Brush'
WARNING: No name was provIDed for external module 'd3-scale' in output.globals – guessing 'd3Scale'
WARNING: No name was provIDed for external module 'd3-shape' in output.globals – guessing 'd3Shape'
WARNING: No name was provIDed for external module 'd3-array' in output.globals – guessing 'd3Array'
WARNING: No name was provIDed for external module 'd3-interpolate' in output.globals – guessing 'd3Interpolate'
WARNING: No name was provIDed for external module 'd3-format' in output.globals – guessing 'd3Format'
WARNING: No name was provIDed for external module 'd3-color' in output.globals – guessing 'd3_color'
WARNING: No name was provIDed for external module 'd3-hIErarchy' in output.globals – guessing 'd3HIErarchy'
WARNING: No name was provIDed for external module 'd3-time-format' in output.globals – guessing 'd3TimeFormat'
√ Bundling to UMD
√ Minifying UMD bundle
√ WriTing package Metadata
i Built @swimlane/ngx-charts

------------------------------------------------------------------------------
Built Angular Package
 - from: F:\Appl\angular\ngx-charts-master\ngx-charts-master\projects\swimlane\ngx-charts
 - to:   F:\Appl\angular\ngx-charts-master\ngx-charts-master\dist\swimlane\ngx-charts
------------------------------------------------------------------------------

解决方法

几乎所有的东西都试过了...最后我正在导入源代码,看起来它想要根目录中的项目文件夹而不是它外部的路径,所以我从根目录下的模块存储库中复制了项目文件夹我的应用程序并指向它

import { NgxChartsModule } from '../projects/swimlane/ngx-charts/src/lib/ngx-charts.module';

至少,现在我的 ng serve 运行良好(所以我对这个解决方案/解决方法很满意)

编译器选项

我忘记分享我必须在 tsconfig.json 中更新的设置

"Strict": false,"noImplicitReturns": false,

及以下

  "angularCompilerOptions": {
    "enableI18nLegacymessagEIDFormat": false,"StricTinjectionParameters": false,"StricTinputAccessModifiers": false,"StrictTemplates": false
  }

无论如何,正如我在下面的评论中所指出的,我还没有(还)向用户发布了我修改过的模块,而是将 percentageFormatTing 的小数位为零的标准模块(这似乎足够公平)

大佬总结

以上是大佬教程为你收集整理的不能在另一个项目中使用本地修改的 Angular 模块全部内容,希望文章能够帮你解决不能在另一个项目中使用本地修改的 Angular 模块所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。