目标入口点“@vcd/ui-components”缺少依赖项:

时间:2020-12-22 21:13:43

标签: node.js angular npm angular-ivy

当我在 https://github.com/juanmendes/vmware-cloud-director-ui-components 处为名为 npm start 的分支ryan-a11y-merge-to-master 应用程序时出现以下错误。如果我运行 master 分支,则不会出错。

ERROR in The target entry-point "@vcd/ui-components" has missing dependencies:
 - @angular/core
 - @clr/angular
 - @angular/common
 - rxjs/internal-compatibility
 - @angular/platform-browser
 - @angular/core/testing
 - @angular/forms
 - @angular/router
 - rxjs
 - rxjs/operators
 - @clr/angular/data/datagrid/interfaces/filter.interface

在此最终错误之前,我还看到以下错误消息:

Warning: Entry point '@vmw/ng-live-docs' contains deep imports into '/Users/jmendes/git/github/juan-core-ui/node_modules/prismjs/components/prism-scss', '/Users/jmendes/git/github/juan-core-ui/node_modules/prismjs/components/prism-typescript'. This is probably not a problem, but may cause the compilation of entry points to be out of order.
Warning: Entry point '@vmw/plain-js-live-docs' contains deep imports into '/Users/jmendes/git/github/juan-core-ui/node_modules/lit-html/directives/unsafe-html'. This is probably not a problem, but may cause the compilation of entry points to be out of order.
Warning: Entry point '@vcd/ui-components' contains deep imports into '/Users/jmendes/git/github/juan-core-ui/node_modules/@clr/angular/data/datagrid/interfaces/filter.interface'. This is probably not a problem, but may cause the compilation of entry points to be out of order.

如果我让同事克隆并运行它:

git clone https://github.com/juanmendes/vmware-cloud-director-ui-components.git
cd vmware-cloud-director-ui-components;
git checkout ryan-a11y-merge-to-master;
npm ci;
npm start;

他们已经能够毫无问题地运行应用程序(并收到警告),但我收到上述错误并在 localhost:4200 收到以下消息:Cannot GET /

我的尝试

  • 删除了 node_modules 和 dist 文件夹
  • npm 缓存清理
  • npm unlink @angular/core(包文件夹和包含它的项目中的两个步骤)
  • npm unlink @vcd/ui-components(两个步骤)
  • 完全删除 node、npm、nmv 并重新安装它们

解决方法

如果我禁用 Ivy 编译,那么它会抱怨,因为它使用的其中一个包 (@vmw/live-docs) 没有为某些动态创建的组件声明 entryComponents(因为它们在 Ivy 编译中不需要) ).

为了解决这个问题,我修改了 @vmw/live-docs 中的代码以获得 entryComponents 并重新构建它,将其 dist 文件夹复制到我当前应用程序中的 node_modules。这允许我以非 Ivy 模式运行应用程序,这不是我想要的

我还能尝试什么?

我没有什么可尝试的了,欢迎提出任何建议。

1 个答案:

答案 0 :(得分:0)

发生这种情况是因为我不知何故有一个带有过时引用的 ~/node_modules/@vcd/ui-components

似乎 node module resolution 正在上树并尝试使用该版本而不是我在 ~/github/vmware-cloud-director-ui-components/tsconfig.json 中配置的版本

"compilerOptions": {
  "paths": {
    "@vcd/ui-components": [
       "../../dist/components"
    ]
  }
},

删除 node_modules 文件夹解决了我的问题