11

我正在尝试按照 Spring教程了解如何使用websockets. 我webpack用来捆绑我的代码babel并将其从ES6. 我试图sockjs用一个正常的import陈述来加入。

import SockJS from 'sockjs'

但是在webpack运行时,我得到了缺少模块错误,

ERROR in ./~/stompjs/lib/stomp-node.js
Module not found: Error: Cannot resolve module 'net' in /Users/name/Developer/cubs-stack-4/cubs-webapp/node_modules/stompjs/lib
 @ ./~/stompjs/lib/stomp-node.js 14:8-22

ERROR in ./~/websocket/package.json
Module parse failed: /Users/name/Developer/cubs-stack-4/cubs-webapp/node_modules/websocket/package.json Line 2: Unexpected token :
You may need an appropriate loader to handle this file type.
| {
|   "_args": [
|     [
|       "websocket@latest",
 @ ./~/websocket/lib/version.js 1:17-43

主要是因为它期望在Node.

我有 2 个问题。

首先,如何stompjs使用import/require语句进入我的浏览器端代码?

其次,如何在教程中,他们可以stompjs放入HEAD并且它不会在浏览器中爆炸,但是当我运行“相同”代码时它会发生webpack

4

5 回答 5

14

安装'net'依赖解决了我的问题

npm i sockjs-client --save
npm i stompjs --save
npm i net

并像这样导入

import * as SockJS from 'sockjs-client';
import * as Stomp from 'stompjs';
于 2019-04-05T05:33:32.423 回答
13

It seems that stompjs library referenced in Spring's documentation is no longer developed, but there is fork that is maintained and with instructions on how to add it to your project available here: https://github.com/stomp-js/stomp-websocket

Here are the steps that I used to resolve this issue and to get things working in a React app with websockets on Spring backend:

# Add sockjs and stompjs dependencies
npm install sockjs-client --save
npm install @stomp/stompjs --save

Then import it into your app:

import SockJS from "sockjs-client"
import Stomp from "@stomp/stompjs"

You should now be able to use the frontend code from the Spring's documentation successfully.

于 2017-07-22T16:18:25.367 回答
2

"sockjs-client": "^1.0.3"你必须在你的 package.json中导入。

然后你可以用

import SockJS from 'sockjs-client'

我的webpack.config.js包含库'sockjs-client'。此外,我添加了以下配置,以忽略缺少的net模块。

node: {
  net: 'empty',
  tls: 'empty',
  dns: 'empty'
}

来源:https ://github.com/hapijs/joi/issues/665#issuecomment-113713020

于 2016-04-18T09:42:28.790 回答
0

在离子 6 角 12

  1. 安装

    npm i --save sockjs-client stompjs net

  2. 然后

    npm i --save-dev @types/sockjs-client @types.stompjs

  3. 使用导入

import * as SockJS from 'sockjs-client'; import * as Stomp from 'stompjs';

  1. 为了解决“全局”的问题,我必须将以下内容添加到 index.html

    <script type="application/javascript"> var global = window; </script>

于 2021-06-06T18:42:17.810 回答
-2

要在浏览器中使用 stompjs,只需打开文件your_path/node_modules/stompjs/index.js,如下注释:

var Stomp = require('./lib/stomp.js');
// var StompNode = require('./lib/stomp-node.js');

module.exports = Stomp.Stomp;
// module.exports.overTCP = StompNode.overTCP;
// module.exports.overWS = StompNode.overWS;
于 2017-01-19T07:59:13.500 回答