2016-01-13 19 views
6

Có chiến lược phân giải mô-đun phân loại cho phép tôi nhập cả hai địa chỉ không phải là bắt đầu bằng dấu gạch chéo và nhập từ node_modules trong cùng một mô-đun không?Độ phân giải mô-đun phân loại

Với "moduleResolution" được đặt thành "nút", trình biên dịch không thể tìm thấy mô-đun cục bộ của tôi, với tất cả các tùy chọn khác, nó không thấy các mô-đun trong thư mục node_modules.

tôi có nhập khẩu sau đây trong tập tin của tôi:

import {Injectable} from "angular2/core"; 
import {Logger} from "core/logging/Logger"; 

"angular2/cốt lõi" tọa lạc tại node_modules, "lõi/đăng nhập/Logger" là mô-đun địa phương của tôi.

Tôi nghĩ rằng có thể thực hiện được, nếu bạn nhìn vào mã của góc cạnh, chúng dường như có cả hai, nghĩa là. trong http.ts mô-đun: https://github.com/angular/angular/blob/master/modules/angular2/src/http/http.ts

import {Injectable} from 'angular2/core'; //this is local 
import {Observable} from 'rxjs/Observable'; //this probably comes from node_modules 

Thông tin thêm nền:
tôi có một dự án bao gồm hai tiểu dự án:
- thư viện
- Ứng dụng
Thư viện định nghĩa một số tiện ích mà ứng dụng sau đó sử dụng. Quá trình xây dựng của tôi đầu tiên xây dựng tiểu dự án 'thư viện', sau đó sao chép nó (biên dịch js cùng với tệp d.ts) vào thư mục con 'thư viện' trong 'node_modules của ứng dụng, sau đó biên dịch' ứng dụng '.

Trong 'thư viện' Tôi có các lớp sau:

//file project/library/jsonparser/JSONParser.ts 
class JSONParser {...} 

//file project/library/services/ConfigurationService.ts 
import {JSONParser} from "../jsonparser/JSONParser" 
class ConfigurationService { 
    constructor(parser: JSONParser){ ... } 
} 

Trong 'ứng dụng':

import {JSONParser} from "library/jsonparser/JSONParser" //this comes from node_modules in 'app' 
import {ConfigurationService} from "library/services/ConfigurationService" //from node_modules 
class AppConfigurationService extends ConfigurationService { 
    constructor(parser: JSONParser) { 
    super(parser); 
    } 
} 

này sẽ không biên dịch càng sớm càng JSONParser có bất kỳ lĩnh vực phi công (họ được nhập từ hai vị trí khác nhau, vì vậy đối với các loại bản ghi, đây là hai loại khác nhau). Đó là lý do tại sao tôi đang thử hai mô-đun nhập khẩu của tôi mà không có dấu gạch chéo lúc bắt đầu. Nhưng có lẽ có những giải pháp khác cho điều đó?

Trả lời

2

Tôi nghĩ rằng điều đó có thể xảy ra, nếu bạn nhìn vào mã của góc cạnh, chúng dường như có cả hai, nghĩa là. trong mô-đun http.ts: https://github.com/angular/angular/blob/master/modules/angular2/src/http/http.ts

Không tầm thường.

Họ có độ phân giải mô-đun classichttps://github.com/angular/angular/blob/6b73d09ba1d8c227d1b297341de2218aea5d1276/modules/angular2/tsconfig.json#L12

nhập {} Quan sát từ 'rxjs/Quan sát'; // điều này có thể xuất phát từ node_modules

Có một đường ống xây dựng không tầm thường dành riêng cho họ ánh xạ tới node_modules. Xem: https://github.com/angular/angular/blob/851647334040ec95d1ab2f376f6b6bb76ead0d9a/tools/broccoli/broccoli-typescript.ts#L271

Các vấn đề liên quan