尝试将Stomp over SockJS添加到angular应用程序:TS2307找不到模块

尝试将Stomp over SockJS添加到angular应用程序:TS2307找不到模块,angular,typescript,requirejs,Angular,Typescript,Requirejs,我下载了一个普通的javascript示例,用于连接websocket Spring频道,我正在努力将此功能导入angular 2应用程序 我已将导入添加到package.json: "dependencies": { "@angular/common": "~2.2.1", (...) "stompjs": "2.3.3", "sockjs-client": "1.1.1" }, 然后建议对systemjs.config.js进行编辑: (functi

我下载了一个普通的javascript示例,用于连接websocket Spring频道,我正在努力将此功能导入angular 2应用程序

我已将导入添加到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 url:

http://localhost/myapp/node_modules/stomp-client
而不是JS文件的路径

我做错了什么?我已经搜索了很多答案,比如这里:我也尝试过做类似的事情。我还尝试了其他进口语法,如:

import * as Stomp from 'stompjs';
但什么都不管用


如何在Angular2中使用这两个库?

您需要在systemjs.config.js中写入库中javascript文件的完整路径:

例如,对于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';
您仍然会遇到错误TS2307:找不到模块,但至少它可以在您的浏览器中工作

我希望它能有所帮助