angular - 尝试将 Stomp over SockJS 添加到 Angular 应用程序 : TS2307 Cannot find module

标签 angular typescript requirejs

我已经下载了一个用于连接到 websocket Spring channel 的工作普通旧式 javascript 示例,并且我正在努力将此功能导入到 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 文件的路径。

我在这里做错了什么?我搜索了很多答案,例如这里:How to use moment.js library in angular 2 typescript app?我尝试过做类似的事情。我还尝试过其他导入语法,例如:

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:找不到模块,但至少它可以在您的浏览器中运行。

希望对您有所帮助。

关于angular - 尝试将 Stomp over SockJS 添加到 Angular 应用程序 : TS2307 Cannot find module,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40717157/

相关文章:

RequireJS + Babel + JSX

css - 如何更改 PrimeNG 数据表扩展器图标

json - 带有 lowdb 的 Angular 6 - 无法正常工作

node.js - 如何在 Npm 中禁用自动监视

javascript - 如何在 TypeScript 中使用实验性装饰器和协调类型?

javascript - 使用 grunt 设置等待秒数

Angular 2 keyup.enter for div 标签

angular - AWS api Gateway Client sdk 使用 promise 和 angular 2 使用 observable

angular - 在 Angular 2 View 中显示可观察的嵌套数据

javascript - 为什么这会导致 requireJS 中出现 "Mismatched anonymous define()"?