Solace nodejs api 与 Webpack 的集成
Solace nodejs api integration with Webpack
我有一个使用 webpack 构建的 angular2 typescript webapp。我正在尝试将 solclientjs 集成到其中,但出现以下异常
solclientjs-exports.js:34 Uncaught Error: Cannot find module "."
at webpackMissingModule (solclientjs-exports.js:34)
at load (solclientjs-exports.js:34)
at loadProduction (solclientjs-exports.js:44)
at new loader (solclientjs-exports.js:47)
at Object. (solclientjs-exports.js:72)
at webpack_require (bootstrap 79a17da…:52)
at Object. (home.component.ts:8)
at webpack_require (bootstrap 79a17da…:52)
at Object. (app.ts:17)
at webpack_require (bootstrap 79a17da…:52)
能请教一下吗?
错误在solclientjs-exports.js
的第44行
var loadProduction = function() {
return load("production", "./solclientjs.js");
};
这是 load()
的作用:
var load = function(type, file) {
if (loaded[type]) return loaded[type];
loaded[type] = require(file);
return loaded[type];
};
好像找不到./solclientjs.js
。请验证 solclientjs.js
是否存在并且位于正确的位置。
使用 exports-loader 将使您能够使用 Webpack 打包库。
这是使用 exports-loader 后的示例webpack.config.js
。
const path = require('path');
const solclientjs = path.resolve(__dirname, 'path/to/solclientjs-10.0.0/lib/solclient.js');
module.exports = {
resolve: {
alias: {
solclientjs$: solclientjs
}
},
module: {
rules: [
{
test: require.resolve(solclientjs),
use: 'exports-loader?window.solace'
}
]
}
}
有几点需要注意:
您需要使用浏览器版本而不是Webpack 的节点版本。打包 Node 版本的库以供在浏览器中使用不受支持且无法正常工作。
- Node 版本使用无法在浏览器上运行的 Node 特定 WebSocket 库
- Node 版本不包括完整范围的 HTTP 传输。例如,浏览器版本允许您回退到 HTTP Comet 传输。这在 Node 版本中不可用。
- 浏览器版本包括特定于浏览器的平台代码来制作东西
在特定浏览器上工作得更好; none 这是
存在于 Node 版本中。
出于兼容性原因,库的浏览器版本是这样发布的
它可以直接包含在文件中的
我有一个使用 webpack 构建的 angular2 typescript webapp。我正在尝试将 solclientjs 集成到其中,但出现以下异常
solclientjs-exports.js:34 Uncaught Error: Cannot find module "."
at webpackMissingModule (solclientjs-exports.js:34)
at load (solclientjs-exports.js:34)
at loadProduction (solclientjs-exports.js:44)
at new loader (solclientjs-exports.js:47)
at Object. (solclientjs-exports.js:72)
at webpack_require (bootstrap 79a17da…:52)
at Object. (home.component.ts:8)
at webpack_require (bootstrap 79a17da…:52)
at Object. (app.ts:17)
at webpack_require (bootstrap 79a17da…:52)
能请教一下吗?
错误在solclientjs-exports.js
var loadProduction = function() {
return load("production", "./solclientjs.js");
};
这是 load()
的作用:
var load = function(type, file) {
if (loaded[type]) return loaded[type];
loaded[type] = require(file);
return loaded[type];
};
好像找不到./solclientjs.js
。请验证 solclientjs.js
是否存在并且位于正确的位置。
使用 exports-loader 将使您能够使用 Webpack 打包库。
这是使用 exports-loader 后的示例webpack.config.js
。
const path = require('path');
const solclientjs = path.resolve(__dirname, 'path/to/solclientjs-10.0.0/lib/solclient.js');
module.exports = {
resolve: {
alias: {
solclientjs$: solclientjs
}
},
module: {
rules: [
{
test: require.resolve(solclientjs),
use: 'exports-loader?window.solace'
}
]
}
}
有几点需要注意:
您需要使用浏览器版本而不是Webpack 的节点版本。打包 Node 版本的库以供在浏览器中使用不受支持且无法正常工作。
- Node 版本使用无法在浏览器上运行的 Node 特定 WebSocket 库
- Node 版本不包括完整范围的 HTTP 传输。例如,浏览器版本允许您回退到 HTTP Comet 传输。这在 Node 版本中不可用。
- 浏览器版本包括特定于浏览器的平台代码来制作东西 在特定浏览器上工作得更好; none 这是 存在于 Node 版本中。
出于兼容性原因,库的浏览器版本是这样发布的 它可以直接包含在文件中的