首页 > 解决方案 > 为项目外的文件创建路径别名

问题描述

我正在研究一个在多个角度项目之间拆分的项目。然后我有一些在每个项目中使用的服务。有没有办法让我在我的项目中加载这些?当我尝试这样做时,我遇到了错误。

/root
  /project-1
    /angular.json
    /tsconfig.json
  /project-2
    /angular.json
    /tsconfig.json
  /utilities
    /src
      /auth.service.ts
      /s3.service.ts
      /lambda.service.ts

tsconfig.json我在角度项目文件(project-1,project-2)的根目录中有这个:

{
  "compilerOptions": {
    "baseUrl": "./",
    "paths": {
      "@utilities/*": [
        "../utilities/src/*"
      ]
    }
  }
}

当我运行npm startproject-1,我收到以下错误:

Error: ../utilities/node_modules/buffer-equal-constant-time/index.js
Module not found: Error: Can't resolve 'buffer' in 'C:\projects\utilities\node_modules\buffer-equal-constant-time'

// Same error repeated for different modules...       

在我的utilities/package.json

{
  "dependencies": {
    "@angular/core": "^11.0.5",
    "@aws-sdk/client-cognito-identity": "^3.0.0",
    "@aws-sdk/client-lambda": "^3.0.0",
    "@aws-sdk/credential-provider-cognito-identity": "^3.0.0",
    "jsonwebtoken": "^8.5.1",
    "rxjs": "^6.6.3",
    "tslib": "^2.0.0"
  },
}

标签: javascriptangulartypescript

解决方案


我想出了一种方法来做到这一点。在utilities文件夹中将其设为链接npm link。然后在project-1文件夹中链接到项目npm link utilities

然后我不得不添加一些路径并包含在tsconfig.json参考中:

{
  "compilerOptions": {
    "baseUrl": "./",
    "paths": {
      "@utilities/*": [
        "node_modules/utilities/src/*"
      ]
    }
  },
  "include": [
    "node_modules/utilities/src/**/*.ts"
  ]
}

推荐阅读