1

我有一个以前在 Angular CLI 1.2.8 上运行的 Angular 5 应用程序,一切运行良好。升级到 1.3 之后(在我升级到 1.5.4 的路上),我们正在使用的外部 npm 链接库似乎存在问题,因为我NullInjectorError: No provider for Http!在访问 localhost:4200 时得到了一个

当我将 HttpModule 添加到 shared-lib 模块时,错误消失了,但我得到了额外的提供程序错误。我期望共享库像以前一样使用主应用程序中的模块,而不是共享库模块。在此示例中,shared-lib 具有依赖于 HttpModule 的 Angular 服务,但 shard-lib 不导入 HttpModule。我正在使用的主要项目确实导入了 HttpModule。

我的 tsconfig.json:

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "baseUrl": "src",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "types": [ "node", "jasmine" ],
    "lib": [
      "es2016",
      "dom"
    ],
    "paths": {
      "rxjs/*": [
        "node_modules/rxjs/*"
      ],
      "@angular/*": [
        "node_modules/@angular/*"
      ]
    }
  }
}

我的 tsconfig.app.json:

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app",
    "module": "es2015",
    "baseUrl": "",
    "types": []
  },
  "include": [
    "./**/*.ts",
    "../node_modules/shared-lib/src/**/*.ts",
    "../node_modules/shared-lib/index.ts",
    "../node_modules/shared-lib/shared-lib.ts"
  ],
  "exclude": [
    "test.ts",
    "**/*.spec.ts",
    "../node_modules/shared-lib/**/*.spec.ts"
  ],
  "typeRoots": [
    "node_modules/@types"
  ],
  "types": [ "node" ]
}

更新:我发现删除共享库 node_modules 中的@angular 文件夹后,该项目可以工作。我不确定为什么 tsconfig.json 中的路径对象不会仅将 Angular 的使用覆盖到我的项目的 node_modules 中。

4

2 回答 2

0

由于已弃用的 HttpModule,会不会是某种冲突?对于较新的版本,您应该使用 HttpClientModule,因为 HttpModule 已被弃用。

于 2017-11-30T00:06:00.890 回答
0

我遇到了与当前节点版本不兼容的 angular/cli 版本的类似问题。问题在于升级依赖项。当您从较低版本的 Angular 升级到任何其他较高版本时,通常会发生这种情况。您可以尝试以下步骤:

npm outdated  --> To list latest and current package details in local application.
npm update    --> to update the local packages.

如果它仍然不起作用,请尝试删除“node_modules”文件夹并安装新的依赖项:

npm install

然后,您可以检查所有包(包括 cli)是否已过时。

于 2017-11-29T19:51:29.157 回答