如何使用 requirejs 导入 strophe?

How to import strophe using requirejs?

我正在尝试使用 strophe.js with relay-starter-kit。我检查了 relay-starter-kit,将 "strophe": "^1.2.2" 添加到 package.json 和 运行 npm install

我找不到如何在不出错的情况下导入 strophe。如果我只是尝试 import Strophe from 'strophe';,我会得到 webpack 无法解析的错误 strophe-polyfill。我为指向主 strophe.js 文件的那个添加了一个解析别名,但这没有帮助(我只收到一条控制台消息 Uncaught ReferenceError: Strophe is not defined)。

看起来 strophe 有一些奇怪的模块系统(它在 github 中提到了 AMD,但我认为这意味着我可以 require 它,但显然不是)。我见过的所有示例都将其导入 HTML 文件并使全局命名空间混乱。我需要在 React 中使用它,所以我认为这行不通。

如何导入 strophe 以在我的 es6 文件中使用?

因为我在这上面浪费了很多时间,所以这里是答案:

  1. 在 HTML 文件中包含 strophe:

  2. 编辑 server.js 使 webpack 将 strophe 公开为静态路径:

    app.use('/node_modules/strophe', express.static('node_modules/strophe'));

  3. 在react组件中,不需要导入strophe,因为它现在是全局可用的。而只是连接,例如:

    var connection = new Strophe.Connection("ws://" + server + ":5280/websocket/");

尝试使用 import * as XMPP from strophe.js 然后调用

var connection = new XMPP.Strophe.Connection(BOSH_SERVICE) 连接服务器