2016-09-03 22 views
13

Tôi nhận được rất nhiều lỗi "sai" khi nhiệm vụ gulp của tôi biên dịch bản đánh số của tôi. Đây là liên quan gulp task:Trình biên dịch TypeScript trong Gulp nói rằng nó không thể tìm thấy mô-đun @angular nhưng biên dịch tốt

var tsProject = typescript.createProject('tsconfig.json', {noResolve: true}); 

gulp.task('build-ts', function() { 
    gulp.src(appDev + '**/*.ts') 
     .pipe(sourcemaps.init()) 
     .pipe(typescript(tsProject)) 
     .pipe(sourcemaps.write()) 
     //.pipe(jsuglify()) 
     .pipe(gulp.dest(appProd)); 
    gulp.src(appDev + '**/*.+(html|css)') 
     .pipe(gulp.dest(appProd)); 
}); 

Và đây là những lỗi tôi nhận được:

[09:38:52] Starting 'default'... 
[09:38:52] Finished 'default' after 8.88 ms 
ng/app.component.ts(1,27): error TS2307: Cannot find module '@angular/core'. 
ng/app.component.ts(5,12): error TS2304: Cannot find name 'module'. 
ng/app.module.ts(1,26): error TS2307: Cannot find module '@angular/core'. 
ng/app.module.ts(2,31): error TS2307: Cannot find module '@angular/platform-browser'. 
ng/app.module.ts(3,31): error TS2307: Cannot find module '@angular/common'. 
[...] 
[09:38:53] TypeScript: 27 semantic errors 
[09:38:53] TypeScript: emit succeeded (with errors) 
[BS] Proxying: http://0.0.0.0:5000 

cấu trúc cây của tôi trông như thế này (giản thể):

. 
├── gulpfile.js 
├── ng 
├── node_modules 
├── package.json 
├── tsconfig.json 
├── typings.json 
└── web 

Tất cả các module mà các nguyên cảo trình biên dịch không tìm thấy được thực sự trong node_modules và ứng dụng cuối cùng của tôi hoạt động tốt mặc dù tất cả các lỗi.

Đây là tôi tsconfig.js:

{ 
    "compilerOptions": { 
    "target": "ES5", 
    "module": "commonjs", 
    "moduleResolution": "node", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": false, 
    "noImplicitAny": false, 
    "outDir": "./app" 
    }, 
    "filesGlob": [ 
    "./app/**/*.ts", 
    "!./node_modules/**/*.ts" 
    ], 
    "exclude": [ 
    "node_modules", 
    "typings/main", 
    "typings/main.d.ts" 
    ], 
    "atom": { 
    "rewriteTsconfig": true 
    } 
} 

Làm thế nào tôi có thể thoát khỏi những sai sót này "dương tính giả".

+1

Tôi nghĩ rằng có sự cố với các tệp được chuyển đến bản biên soạn. Một mặt, bạn chuyển các tập tin 'appDev' và đặt' noResolve'. Mặt khác, bạn có một cấu hình khác trong 'tsconfig'. (Chú ý: các tập tin và loại trừ không hoạt động cùng nhau và cũng tsconfig của bạn không được viết lại bởi gulp!) Nếu bạn gặp vấn đề với độ phân giải của typings, bạn có thể thêm cờ 'traceResolution' vào lời gọi trình biên dịch kiểu. Điều đó sẽ cho bạn một số gợi ý. xem https://github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Module%20Resolution.md#tracing-module-resolution. –

+0

Bạn cũng nên xem xét tùy chọn 'noResolve' mà bạn đang chuyển. Điều này không làm theo bất kỳ nhập khẩu nào đối với các tệp không được chuyển tới trình biên dịch TypeScript. https://github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Module%20Resolution.md#using---noresolve. Tôi muốn đề nghị không phải 'gulp.src' nhưng bắt đầu từ' tsproject' như nguồn gốc của sự thật: https://github.com/ivogabe/gulp-typescript#using-tsconfigjson –

Trả lời

7

Trong gulp.js nộp dòng

var tsProject = typescript.createProject('tsconfig.json', {noExternalResolve: true, noResolve: true}); 

nên

var tsProject = typescript.createProject('tsconfig.json'); 

Như chúng ta muốn tải typings bên ngoài.

Và cũng có thể bạn cần phải nạp typings trong main.ts tập tin lên hàng đầu:

/// <reference path="../typings/index.d.ts" /> 

tôi đã sao chép dự án của bạn và nó biên dịch mà không cần cảnh báo sau này.

+0

funnily đủ Tôi đã thử hai điều đó một cách độc lập trước. cảm ơn! – Juicy

+0

Tôi đã nói với bạn trước đó là vì kiểu đánh máy, nhưng không biết toàn bộ cấu hình của bạn :) – tibbus

+0

Không nên đưa vào các tham chiếu nhưng trực tiếp trong tsconfig hoặc chuỗi xây dựng của bạn. – DaSch

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