簡體   English   中英

Webpack並非所有源地圖都顯示打字稿

[英]Webpack not all sourcemaps show typescript

因此,我有一個結構如下的項目:

Root
|   index.html
|   package.json
|   tree.txt
|   tsconfig.json
|   webpack.config.js
|   
+---.vscode
|       settings.json
|       tasks.json
|       
+---app
|   |   main.js
|   |   main.js.map
|   |   main.ts
|   |   test.js
|   |   test.js.map
|   |   test.ts
|   |   
|   +---components
|   |       app.component.js
|   |       app.component.js.map
|   |       app.component.ts
|   |       
|   \---modules
|           app.module.js
|           app.module.js.map
|           app.module.ts
|           
\---node_modules
    |
    *SNIP*

我的問題是,只有我的main.ts源映射在chrome開發工具中顯示為實際的打字稿,app.module,app.component和test顯示為已編譯的javascript。

我設法找到的有關Webpack打字稿的任何其他問題都是babel加載程序特定的,放置斷點或源映射根本沒有生成的問題。

我的tsconfig:

{
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "moduleResolution": "node",
        "sourceMap": true,
        "watch": true,
        "compileOnSave": true,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "removeComments": false,
        "noImplicitAny": false
    },
    "exclude": [
        "node_modules",
        "typings/browser",
        "typings/browser.d.ts"
    ],
    "atom": {
        "rewriteTsconfig": false
    },
    "typeRoots": [
        "./node_modules/@types"
    ],
    "types": [
        "core-js"
    ]
}

我的webpack.config.js:

const config = {
    entry: {
        app: "./app/main.ts"
    },
    output: {
        filename: "./bundle.js",
        path: "./"
    },
    devtool: "source-map",
    module: {
        loaders: [
            {
                test: /\.ts$/,
                loaders: ["awesome-typescript-loader", "angular2-template-loader"]
            }
        ]
    },
    resolve: {
        extentions: ["", ".ts", ".js"]
    }
}

module.exports = config;

適用於main.ts的Chrome開發工具輸出:

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './modules/app.module';
import { test } from "./test";
const platform = platformBrowserDynamic();
platform.bootstrapModule(AppModule);
alert(test.msg)


// WEBPACK FOOTER //
// ./~/angular2-template-loader!./app/main.ts

適用於test.js的Chrome開發工具輸出:

"use strict";
var test = (function () {
    function test() {
    }
    test.msg = "test";
    return test;
}());
exports.test = test;
//# sourceMappingURL=test.js.map


//////////////////
// WEBPACK FOOTER
// ./app/test.js
// module id = 25
// module chunks = 0

所有單獨的.map文件源均指向腳本的ts版本。

webpack-dev-server命令輸出:

webpack-dev-server -d
 http://localhost:8080/webpack-dev-server/
webpack result is served from /
content is served from C:\Users\Joseph Goodley\Desktop\stockmonitor\frontend
Hash: b3331cfe915060534a0f
Version: webpack 1.13.3
Time: 7618ms
          Asset     Size  Chunks             Chunk Names
    ./bundle.js  1.54 MB       0  [emitted]  app
./bundle.js.map  1.75 MB       0  [emitted]  app
chunk    {0} ./bundle.js, ./bundle.js.map (app) 1.49 MB [rendered]
    [0] ./app/main.ts 326 bytes {0} [built]
    [1] ./~/@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js 6.89 kB {0} [built]
    [2] ./~/@angular/compiler/bundles/compiler.umd.js 825 kB {0} [built]
    [3] ./~/@angular/core/bundles/core.umd.js 386 kB {0} [built]
    [4] ./~/rxjs/Subject.js 5.33 kB {0} [built]
    [5] ./~/rxjs/Observable.js 6.04 kB {0} [built]
    [6] ./~/rxjs/util/root.js 471 bytes {0} [built]
    [7] ./~/rxjs/util/toSubscriber.js 707 bytes {0} [built]
    [8] ./~/rxjs/Subscriber.js 8.87 kB {0} [built]
    [9] ./~/rxjs/util/isFunction.js 148 bytes {0} [built]
   [10] ./~/rxjs/Subscription.js 5.99 kB {0} [built]
   [11] ./~/rxjs/util/isArray.js 146 bytes {0} [built]
   [12] ./~/rxjs/util/isObject.js 151 bytes {0} [built]
   [13] ./~/rxjs/util/tryCatch.js 422 bytes {0} [built]
   [14] ./~/rxjs/util/errorObject.js 177 bytes {0} [built]
   [15] ./~/rxjs/util/UnsubscriptionError.js 1.07 kB {0} [built]
   [16] ./~/rxjs/Observer.js 193 bytes {0} [built]
   [17] ./~/rxjs/symbol/rxSubscriber.js 270 bytes {0} [built]
   [18] ./~/rxjs/symbol/observable.js 631 bytes {0} [built]
   [19] ./~/rxjs/util/ObjectUnsubscribedError.js 955 bytes {0} [built]
   [20] ./~/rxjs/SubjectSubscription.js 1.4 kB {0} [built]
   [21] ./~/@angular/platform-browser/bundles/platform-browser.umd.js 120 kB {0} [built]
   [22] ./~/@angular/common/bundles/common.umd.js 121 kB {0} [built]
   [23] ./app/modules/app.module.js 1.42 kB {0} [built]
   [24] ./app/components/app.component.js 1.22 kB {0} [built]
   [25] ./app/test.js 175 bytes {0} [built]
webpack: bundle is now VALID.

我注意到它正在[23-24]上構建js文件,但是我不知道為什么,另外,僅運行webpack --debug會生成bundle.js.map文件,該文件的來源也指向js文件。

這個問題困擾我已經有一段時間了,所以如果這很簡單,我深表歉意。

謝謝你的幫助!

更新:

問題可能是我在將ts打包之前將其編譯了嗎? 我嘗試在沒有編譯文件的情況下運行webpack,但是現在找不到我的ts文件:

./app/main.ts
Module not found: Error: Cannot resolve 'file' or 'directory' ./modules/app.module in C:\--\app
resolve file
  C:\--\app\modules\app.module doesn't exist
  C:\--\app\modules\app.module.webpack.js doesn't exist
  C:\--\app\modules\app.module.web.js doesn't exist
  C:\--\app\modules\app.module.js doesn't exist
  C:\--\app\modules\app.module.json doesn't exist
resolve directory
  C:\--\app\modules\app.module doesn't exist (directory default file)
  C:\--\app\modules\app.module\package.json doesn't exist (directory description file)
[C:\--\app\modules\app.module]
[C:\--\app\modules\app.module.webpack.js]
[C:\--\app\modules\app.module.web.js]
[C:\--\app\modules\app.module.js]
[C:\--\app\modules\app.module.json]
 @ ./app/main.ts 3:19-50

為什么不解析我的.ts文件?

找到了問題。

不幸的是,在我的package.config “擴展名”應該是“擴展名”

如您所說,該錯誤位於webpack.config.js 從Webpack 2開始,當您擁有無效的配置對象時,它會顯示一條錯誤消息,因此升級Webpack版本將有助於您將來避免這些問題。

如果您不想升級Webpack,則可以使用此軟件包為您自動驗證您的配置: https : //github.com/js-dxtools/webpack-validator

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM