【发布时间】:2020-02-13 14:55:23
【问题描述】:
(上下文:角度 8,节点 12.15.0)
编辑:这似乎是一个错误,所以我打开了一个问题here
我正在建立一个图书馆。我在tsconfig.json 中定义了路径@env:
{
"compilerOptions": {
[...]
"paths": {
"@env/*": [
"projects/mylib/src/environments/*"
]
}
}
在代码中,我这样引用环境:
import { environment } from '@env/environment';
但似乎编译器被误导了,因为当我尝试构建 (ng build my-lib) 时,我收到以下警告:
WARNING: No name was provided for external module '@env/environment' in output.globals – guessing 'environment'
此外,在项目中导入模块会在编译时生成此错误消息:
ERROR in The target entry-point "my-lib" has missing dependencies:
- @env/environment
@env/environment 似乎被解释为外部模块。我怎样才能避免这种情况?
重现步骤:
注意:我制作了一个现成的 SSCCE here
- 使用最简单的选项创建一个新项目 (
ng new acme):无路由,样式使用普通的旧 CSS。 - 在项目中,创建一个库(
ng g generate library my-lib) - 在
projects/my-lib/src下,创建一个文件夹environments,其中包含两个文件:environment.ts和environments.prod.ts - 像这样配置
projects/my-lib/tsconfig.lib.json(我刚刚添加了paths块):
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "../../out-tsc/lib",
"target": "es2015",
"declaration": true,
"inlineSources": true,
"types": [],
"lib": [
"dom",
"es2018"
],
"paths": {
"baseUrl": [ "./" ],
"@env/*": [ "projects/my-lib/src/environments/*" ]
}
},
"angularCompilerOptions": {
"skipTemplateCodegen": true,
"strictMetadataEmit": true,
"enableResourceInlining": true
},
"exclude": [
"src/test.ts",
"**/*.spec.ts"
],
}
项目应该是这样的:
.
├── angular.json
├── browserslist
├── e2e
│ ├── protractor.conf.js
│ ├── src
│ │ ├── app.e2e-spec.ts
│ │ └── app.po.ts
│ └── tsconfig.json
├── karma.conf.js
├── package.json
├── package-lock.json
├── projects
│ └── my-lib
│ ├── karma.conf.js
│ ├── ng-package.json
│ ├── package.json
│ ├── README.md
│ ├── src
│ │ ├── environments
│ │ │ ├── environment.prod.ts
│ │ │ └── environment.ts
│ │ ├── lib
│ │ │ ├── my-lib.component.spec.ts
│ │ │ ├── my-lib.component.ts
│ │ │ ├── my-lib.module.ts
│ │ │ ├── my-lib.service.spec.ts
│ │ │ └── my-lib.service.ts
│ │ ├── public-api.ts
│ │ └── test.ts
│ ├── tsconfig.lib.json
│ ├── tsconfig.lib.prod.json
│ ├── tsconfig.spec.json
│ └── tslint.json
├── README.md
├── src
│ ├── app
│ │ ├── app.component.css
│ │ ├── app.component.html
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ └── app.module.ts
│ ├── assets
│ ├── environments
│ │ ├── environment.prod.ts
│ │ └── environment.ts
│ ├── favicon.ico
│ ├── index.html
│ ├── main.ts
│ ├── polyfills.ts
│ ├── styles.css
│ └── test.ts
├── tsconfig.app.json
├── tsconfig.json
├── tsconfig.spec.json
└── tslint.json
现在,
- 要重现警告,请构建库:
ng build my-lib - 要重现错误,在主项目中导入
MyLibModule并构建它:ng build
【问题讨论】:
标签: angular typescript