2

Typescript 2.0.10 から 2.1.4 にアップグレードすると、エントリ ポイントまたは gulp ソース グロブが尊重されなくなったため、webpack、webpack-stream、ts-loader、または gulp で何かが壊れているように見えます。/client および app.ts の ts ファイルだけでなく、gulp.src および Web パック エントリ ポイントにあるすべての .ts ファイル (/server ソース フォルダー内のファイルを含む) がプロジェクトに含まれているようです。これを行うべき別の/新しい/より良い方法はありますか?

gulpファイルで:

const serverPath = 'server';
const clientPath = 'client';
const buildPath = 'build';
const paths = {
    server: {
        scripts: [
            `${serverPath}/**/*.ts`
        ]
    },
    client: {
        files: [
            `${clientPath}/**/*`
        ],
        scripts: [
            `${clientPath}/**/*.ts`
        ],
        entry: `${clientPath}/app.ts`
    }
};


gulp.task('build:client', cb => {
    gulp.src(paths.client.entry)
        .pipe(webpackStream(webpackConfig, webpack))
        .pipe(gulp.dest(`${buildPath}/${clientPath}`));
    cb();
});

Web パック構成:

entry: {
    app: './client/app.ts'
}

ts: {
    configFileName: './tsconfig.json'
}

resolve: {
    extensions: ['', '.webpack.js', '.web.js', '.ts', '.tsx', '.js']
}

module: {
    loaders: [
        { test: /\.ts$/, loader: 'ng-annotate-loader!ts-loader' }
    ]
}

tsconfig.json で:

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es6",
        "removeComments": false,
        "noImplicitAny": true,
        "sourceMap": true,
        "inlineSources": true,
        "experimentalDecorators": true,
        "emitDecoratorMetadata": true
    }
}

2.0.10 を使用した出力:

ts-loader: Using typescript@2.0.10 and /Users/chris/code/class-app/tsconfig.json
[20:47:36] Version: webpack 1.14.0
Asset       Size  Chunks             Chunk Names
app.js.map  950 bytes       0  [emitted]  app
app.js  550 bytes       0  [emitted]  app

2.1.4 を使用した出力:

ts-loader: Using typescript@2.1.4 and /Users/chris/code/class-app/tsconfig.json
server/api/thing/thing.controller.ts(17,16): error TS2322: <ts error in server portion, not relevant>
[20:53:03] TypeScript: 1 semantic error
[20:53:03] TypeScript: emit succeeded (with errors)
Unhandled rejection Error in plugin 'webpack-stream'
Message:
/Users/chris/code/class-app/server/api/thing/thing.controller.ts <same as above>
4

1 に答える 1

2

どうやら問題は、WebPack の TypeScript がサーバー コード上でずっと実行されていることです (そうあるべきではありませんでしたが)。TypeScript のアップグレードによって導入されたサーバー TS の問題を修正する予定でしたが、実際に公開されたのは WebPack のコンパイルでした。ずっとあるべきではないファイル。TypeScript の以前の (「動作中」) バージョンのサーバー ts に意図的に問題を導入することで、これをテストし、同じエラーを取得しました。

/client 内のファイルだけでなく、すべての TS ファイルをコンパイルしようとしている理由を突き止める必要がありますが、それについては新たに質問します。

于 2016-12-22T17:59:50.333 に答える