2016-10-31 12 views
0

私はJavaScriptフレームワークの設定が比較的新しく、gulp、typescript、およびbabelを使用して書いたライブラリのコンパイル/トランジリレーションを設定しようとしています。私が持っている問題は、外部ライブラリを含むことにあります。私のプロジェクトは、MathJS、RequireJS、RXJS、およびJQueryの使用を目指しています。node_moduleがTypescriptプロジェクトに含まれています

は、コンパイル時には、私は次のエラーを取得:私はロードしようとすると、コンパイル/ transpilationが終了すると Compilation errors

を、私はその後、私のエントリポイント(/services/bid-manager.service.js)とを参照します

package.json

を: Runtime (Chrome conosole) errors

私の現在の設定がそうのようになります。ファイル、私は次のエラーを取得します3210

{ 
    "name": "bid-manager-service", 
    "version": "0.0.1", 
    "description": "Service for calculating bids for PVBid", 
    "main": "index.js", 
    "scripts": { 
    "test": "test" 
    }, 
    "keywords": [ 
    "private", 
    "pvbid", 
    "bid", 
    "manager" 
    ], 
    "author": "Michael J. Miller", 
    "license": "ISC", 
    "dependencies": { 
    "jquery": "^3.1.1", 
    "mathjs": "^3.6.0", 
    "requirejs": "^2.3.2", 
    "rxjs": "^5.0.0-rc.1" 
    }, 
    "devDependencies": { 
    "babel-polyfill": "^6.16.0", 
    "gulp": "^3.9.1", 
    "gulp-babel": "^6.1.2", 
    "gulp-sourcemaps": "^2.2.0", 
    "gulp-typescript": "^3.1.2", 
    "typescript": "^2.0.6" 
    } 
} 

tsconfig.json:

{ 
    "compilerOptions": { 
    "declaration": false, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "lib": ["es6", "dom"], 
    "mapRoot": "./", 
    "module": "es6", 
    "moduleResolution": "node", 
    "rootDir": "./src", 
    "outDir": "./dist", 
    "sourceMap": true, 
    "target": "es5" 
    }, 
    "exclude": [ 
    "node_modules" 
    ] 
} 

gulpfile.js

var gulp = require('gulp'); 
var sourcemaps = require('gulp-sourcemaps'); 
var ts = require('gulp-typescript'); 
var babel = require('gulp-babel'); 

var tsProject = ts.createProject('./tsconfig.json'); 

gulp.task('default', function() { 
    return gulp.src('src/**/*.ts') 
     .pipe(sourcemaps.init()) 
     .pipe(ts(tsProject())) 
     .pipe(babel()) 
     .pipe(sourcemaps.write('.')) 
     .pipe(gulp.dest('release')); 
}); 

そして、私はエラーを取得しています、私のエントリポイントへの最初の数行:

入力文字:

import { AsyncSubject } from 'rxjs/AsyncSubject'; 
import { Observable } from 'rxjs/Observable'; 

Transpiled Javascriptを:どのような援助のため、事前に

"use strict"; 

var AsyncSubject_1 = require('rxjs/AsyncSubject'); 
var bid_update_service_1 = require('./bid-update.service'); 
var bid_factory_1 = require('../factories/bid.factory'); 

ありがとう!

答えて

0

このエラーは、初めて私のプロジェクトにtypescriptを統合するときに私を不満にさせたものですが、TSの正しい入力(タイピング定義ファイルfile.d.ts)が含まれていないためです。

TSはスーパーセットであるため、TSはスーパーセットであるため、タイプスクリプトのコンパイル時エラーを作成するために使用しているパッケージについてTSが「学習」できるようにするパッケージを定義する必要があります。たとえばこれは非常に基本的な例です。 let foo: stringがあり、その代わりにfoo = 1という数値を渡すと、gulpがTSをコンパイルしようとするとエラーが発生します。コンパイル時に受け取るエラーは、型定義ファイルが型指定されていないJSファイルに '型指定'を与える​​ために使用されるものです。

注:これらのエラーが発生しても、ファイルはJSにコンパイルする必要があります。エラーがなければ、ファイルはビルドで動作するはずです。あなたはタイプミスとTSを使用し続ける場合が、あなたがこれをまだ行っていない場合は、あなたが続くとTypings Docについて理解しておく必要がありちょうどJS


を使用する方がよいかもしれません。あなたのコンピュータに入力をグローバルにインストールし、必要なタイプを探して必要なタイプを定義します。

たとえば次のようにインストールします:

# Install typings library using npm  
npm install typings -g 

# Search the typings repositories for the one you want 
# rxjs = your module 
typings search rxjs 

# Choose from the ones that are available and replace dt~mocha below 
# dt~ = the source usually either dt or npm 
typings install dt~rxjs--global --save 

以下は、あなたが最初のインストールでダウンロードされた情報/ファイルをtypings.jsonやタイピングのフォルダを作成しておく必要があります。

定義ファイルの入力については、すべてのjsライブラリが利用できるわけではありません。したがって、あなたは必要性のいずれかになります。

  1. 完全にあなたが作成することにより、タイピングコミュニティに冒険貢献感じている場合は、ご希望のパッケージが他の誰か
  2. によって解放されるまでは、TS
  3. 待ちたいファイルJSを書き換えますあなたが必要とするモジュールの入力定義ファイル(d.ts)は、まだ入手できない場合は、多くの方に感謝しています。
関連する問題