2016-11-12 32 views
0

所以,我有一個項目的結構,像這樣:的WebPack不是所有sourcemaps顯示打字稿

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 sourcemap被顯示爲Chrome開發工具的實際打字稿,app.module, app.component和測試顯示爲編譯的JavaScript。

我設法找到關於webpack打字稿的任何其他問題都是babel loader的特定問題,根本不會生成放置斷點或sourcemaps的問題。

我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; 

Chrome瀏覽器開發工具輸出main.ts:

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 

Chrome瀏覽器開發工具的輸出測試.js:

"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. 

我注意到,它的建設對JS [23-24]文件,但是我不知道爲什麼,只是額外運行的WebPack --debug產生一束.js.map文件也有其源代碼指向js文件。

這個問題一直困擾我很長一段時間,所以如果這是簡單的東西,我很抱歉。

感謝您的幫助!

更新:

可能的問題是我webpacking之前編譯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文件?

回答

1

發現問題。

裏面我package.config「的一些推廣」應該已經「擴展」不幸的是我沒有誤碼指示語法問題。

0

正如您所說,錯誤在您的webpack.config.js之內。從Webpack 2開始,當你有一個無效的配置對象時,它會給出錯誤信息,所以升級你的Webpack版本將有助於你在將來避免這些問題。

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