2016-11-21 90 views
1

我已經下載了一個用於連接到websocket Spring通道的工作plain-old-javascript示例,我正在爲將角度2應用程序導入此功能而苦苦掙扎。嘗試添加Stomp over SockJS到角度應用程序:TS2307找不到模塊

我已經添加了進口的package.json:

"dependencies": { 
    "@angular/common": "~2.2.1", 
    (...) 
    "stompjs": "2.3.3", 
    "sockjs-client": "1.1.1" 
    }, 

然後建議編輯到systemjs.config.js:

(function (global) { 
    System.config({ 
     paths: { 
      // paths serve as alias 
      'npm:': 'node_modules/' 
     }, 
     // map tells the System loader where to look for things 
     map: { 
      // our app is within the app folder 
      app: 'app', 
      // angular bundles 
      '@angular/core': 'npm:@angular/core/bundles/core.umd.js', 
      (...) 
      'sockjs-client': 'npm:sockjs-client', 
      'stompjs': 'npm:stompjs' 
     }, 
     // packages tells the System loader how to load when no filename and/or no extension 
     packages: { 
      (...) 
      'sockjs-client': { 
       defaultExtension: 'js' 
      }, 
      stompjs: { 
       defaultExtension: 'js' 
      } 
     } 
    }); 
})(this); 

但當我添加導入

import {Stomp} from "stompjs"; 

我收到「TS2307:找不到模塊」錯誤消息,並將代碼編譯爲:

var stompjs_1 = require("stompjs"); 

結果無效的HTTP網址:

http://localhost/myapp/node_modules/stomp-client 

,而不是路徑JS文件。

我在這裏犯了什麼錯?我搜索了許多SO答案,例如:How to use moment.js library in angular 2 typescript app?,我試着做類似的事情。我也試過替代進口的語法,如:

import * as Stomp from 'stompjs'; 

但沒有任何工程。

如何在Angular2中使用這兩個庫?

回答

1

您需要的完整路徑寫在你的庫中的JavaScript文件,在systemjs.config.js:

例如,對於stompjs,根據Github上回購,可能是:

map { 
    (...) 
    'stompjs': 'npm:stompjs/lib/stomp.min.js' 
}, 
packages: { 
    // Remove stompjs from here, because you already have the full path 
} 

後,您可以使用您的庫使用此語法:

import * as stomp from 'stompjs'; 

你仍然有錯誤error TS2307: Cannot find module,但至少它會在你的瀏覽工作河

我希望它有幫助。

相關問題