Tôi đang xem sử dụng this Yeoman generator làm khởi động cho một dự án nhỏ có chứa một số thành phần biểu mẫu có thể sử dụng lại mà tôi có thể xuất bản. Các máy phát điện xây dựng một mô-đun và một thành phần ví dụ, chỉ thị, đường ống và dịch vụ được cấu hình để sử dụng (you can see the template files for the generator here).Không thể nhập mô-đun Góc phát triển cục bộ của tôi vào ứng dụng Góc
Sau đó, tôi sử dụng npm link
để cho phép tôi cài đặt dự án đã tạo trong ứng dụng Góc của tôi, hoạt động tốt, như được minh họa bên dưới từ thư mục node_modules
của dự án;
Tôi đã sau đó nhập khẩu các mô-đun vào mô-đun của tôi trong ứng dụng kiễu góc của tôi;
import { SampleModule } from 'my-test-library';
@NgModule({
imports: [
CommonModule,
FormsModule,
ReactiveFormsModule,
NgbModule,
MomentModule,
SampleModule // <-- Imported Here
],
declarations: [],
providers: []
})
export class TasksModule { }
Nhập mô-đun này gây ra lỗi Uncaught Error: Unexpected value 'SampleModule' imported by the module 'TasksModule'
và tôi không thể hiểu tại sao.
Có hai điều tôi nhận thấy khi so sánh thư viện tôi đã nhập khẩu với một thư viện của bên thứ ba (ví dụ ng-bootstrap
)
- Như tôi đã sử dụng
npm link
nhập thư viện để cho phép tôi để kiểm tra trong quá trình phát triển toàn bộ Cấu trúc thư mục đã được nhập (thay vì chỉ là thư mụcdist
. Tôi cho rằng điều này có nghĩa là mã không phải là mã đã được nhập bởiTasksModule
. Nếu tôi cố gắng nhậpmy-test-library/dist
tôi nhận được một mô-đun không thể tìm thấy lỗi. - Không giống như
ng-bootstrap
thư viện dường như bị thiếu*.metadata.json
tệp ở đầu ra.
tập tin thư viện của tôi tsconfig.json
là như sau (không thay đổi từ máy phát điện cài đặt)
{
"compilerOptions": {
"noImplicitAny": true,
"module": "commonjs",
"target": "ES5",
"emitDecoratorMetadata": true, <-- Checked to ensure this was true
"experimentalDecorators": true,
"sourceMap": true,
"declaration": true,
"outDir": "./dist"
},
"files": [
"typings/index.d.ts",
"index.ts"
],
"exclude": [
"node_modules",
"dist"
]
}
Dựa trên các mặt hàng này, hay cái gì khác, những gì tôi thiếu để làm việc này? Cảm ơn!
Edit:.. * Mẫu d.ts file (như mặc định sau khi cài đặt)
// sample.component.d.ts
export declare class SampleComponent {
constructor();
}
// sample.directive.d.ts
import { ElementRef } from '@angular/core';
export declare class SampleDirective {
private el;
constructor(el: ElementRef);
}
Chỉnh sửa 2 Vì vậy, tôi đã cố gắng symlinking các dist
thư mục (my-test-library/dist
) vào thư mục gốc của node_modules
và nhập mô-đun từ đó và nó hoạt động tốt.
- Có cách nào để sử dụng
npm link
, chỉ nhập thư mục dist (ở gốc)? - Tôi cũng không hiểu tại sao việc cập nhật lần nhập ban đầu của mình thành
import { SampleModule } from 'my-test-library/dist';
không hoạt động?
Bạn có thiết lập tập tin system.config của bạn để lập bản đồ ' 'tôi-test-library'' một cái gì đó ? – echonax
Xin lỗi, không chắc chắn bạn có ý nghĩa gì với @echonax, dự án của tôi không có tệp đó (Nó chỉ có các tệp cấp gốc được hiển thị trong ảnh chụp màn hình ở trên) –
vậy, có thể bạn đã gặp phải lỗi này: https: // github.com/angular/angular/issues/11639 được nói đến ở đây: https://github.com/angular/angular/issues/11438? nếu có, bạn có thể tìm thấy câu trả lời có thể có từ 'Avien' trên 16 sept. trong liên kết thứ hai. Tôi chỉ suy đoán ở đây, bởi vì có rất nhiều khả năng. hy vọng bạn làm được điều này! – Dominik