2016-03-04 17 views
6

Với cấu trúc thư mục sau:Tại sao TypeScript không thể tìm thấy các mô-đun được cài đặt vào 'node_modules'?

{project}/ 
    |-- node_modules/ 
    | |-- lodash 
    |-- src/ 
    | |-- index.ts 
    |-- lib/ (output) 
    | |-- index.js 
    | |-- index.d.ts 
    |-- package.json 
    |-- tsconfig.json 

Trong khi các chức năng đầu ra được xây dựng đúng cách; lệnh tsc phàn nàn rằng nó không thể giải quyết các module lodash khi tôi sử dụng bất kỳ những điều sau đây:

import _ from "lodash"; 
import _ = require("lodash"); 
import * as _ from "lodash"; 

Bên trong 'tsconfig.json' tập Tôi đã bao gồm tôi những điều sau đây:

... 

"target": "es6", 
"sourceMap": true, 
"module": "commonjs", 
"moduleResolution": "node", 

... 

Nhưng bất chấp điều này vẫn không tìm thấy bất kỳ mô-đun nào được cài đặt bằng npm.

Tôi có thiếu thứ gì đó cần thiết để làm cho TypeScript tìm thấy các mô-đun này không?

Tôi nhận ra rằng không có tệp định nghĩa TypeScript TypeScript không thể cung cấp kiểm tra loại bổ sung; Tuy nhiên, chắc chắn những điều này chỉ nên mặc định cho loại any phải không?

+1

Hãy chắc chắn rằng bạn có nguyên cảo 1.6 hoặc cao hơn. Đây là một [thảo luận tốt] (https://medium.com/@mweststrate/how-to-create-strongly-typed-npm-modules-1e1bda23a7f4#.ci86154ph) về cách nó "làm việc" trước 1.6 và cách nó hoạt động sau. –

Trả lời

5

Vì lodash không có tệp định nghĩa trong thư mục node_modules/lodash, thư mục này sẽ không hoạt động. Bạn sẽ phải tải nó bằng cách sử typings hoặc sử dụng một tuyên bố môi trường xung quanh thay vì một nhập khẩu:

declare var _: any; 

Đối với Node.js bạn sẽ phải sử dụng:

var _ = require('lodash'); 
Các vấn đề liên quan