在 React Web 应用程序中使用 createjs-soundjs
Using createjs-soundjs in react web app
我想使用 https://www.npmjs.com/package/createjs-soundjs 在 React 网络应用程序上播放声音。
我使用 npm install createjs-soundjs
正常安装了软件包,它显示在软件包列表中。我应该如何将它包含到我的项目中,以便我可以使用它?
我试过以下方法:
import React from 'react';
import classNames from 'classnames';
import createjs from 'createjs';
import SoundJS from 'createjs-soundjs'; // this line causes an error
控制台报错:soundjs-0.6.2.min.js:17 Uncaught ReferenceError: createjs is not defined。这个错误信息很清楚,但我不知道从哪里开始。我错过了一些基本的东西吗?
SoundJS 核心包不是正确的 CommonJS 或 ES6 格式,它是一个强烈假设它作为浏览器中的顶级脚本加载的包。因此,它首先尝试通过将其分配给 this
上的 属性(它假定为 window)来创建全局值,然后尝试将此全局值作为 createjs
。
所以很明显这在模块上下文中不起作用。
虽然有一个解决方法,该代码适用于 Webpack 2 并基于 this comment(适用于 Webpack 1):
module: {
rules: [
// ...
{
test: /createjs/,
use: [
'imports-loader?this=>window',
'exports-loader?createjs'
]
},
// ...
]
},
plugins: [
// ...
new webpack.ProvidePlugin({
'createjs': 'createjs',
}),
// ...
],
resolve: {
alias: {
'createjs': path.resolve(__dirname, '../lib/soundjs-0.6.2.combined'),
}
},
第三个条目 (resolve.alias) 将 createjs
的导入映射到我下载并放入我的 lib
文件夹中的文件(这不像使用某些东西那么优雅来自 npm,但现在我确定我得到了什么。npm 版本也可能有效)。
第一个条目 (module.rules) 告诉 Webpack 首先用 window
替换 this
,然后从全局 (window) 上下文并将其作为模块导出。
最后,第二个条目 (ProvidePlugin) 在对全局 createjs
(在其他模块中)的所有请求之前使用 const createjs = require('createjs')
。
我想使用 https://www.npmjs.com/package/createjs-soundjs 在 React 网络应用程序上播放声音。
我使用 npm install createjs-soundjs
正常安装了软件包,它显示在软件包列表中。我应该如何将它包含到我的项目中,以便我可以使用它?
我试过以下方法:
import React from 'react';
import classNames from 'classnames';
import createjs from 'createjs';
import SoundJS from 'createjs-soundjs'; // this line causes an error
控制台报错:soundjs-0.6.2.min.js:17 Uncaught ReferenceError: createjs is not defined。这个错误信息很清楚,但我不知道从哪里开始。我错过了一些基本的东西吗?
SoundJS 核心包不是正确的 CommonJS 或 ES6 格式,它是一个强烈假设它作为浏览器中的顶级脚本加载的包。因此,它首先尝试通过将其分配给 this
上的 属性(它假定为 window)来创建全局值,然后尝试将此全局值作为 createjs
。
所以很明显这在模块上下文中不起作用。
虽然有一个解决方法,该代码适用于 Webpack 2 并基于 this comment(适用于 Webpack 1):
module: {
rules: [
// ...
{
test: /createjs/,
use: [
'imports-loader?this=>window',
'exports-loader?createjs'
]
},
// ...
]
},
plugins: [
// ...
new webpack.ProvidePlugin({
'createjs': 'createjs',
}),
// ...
],
resolve: {
alias: {
'createjs': path.resolve(__dirname, '../lib/soundjs-0.6.2.combined'),
}
},
第三个条目 (resolve.alias) 将 createjs
的导入映射到我下载并放入我的 lib
文件夹中的文件(这不像使用某些东西那么优雅来自 npm,但现在我确定我得到了什么。npm 版本也可能有效)。
第一个条目 (module.rules) 告诉 Webpack 首先用 window
替换 this
,然后从全局 (window) 上下文并将其作为模块导出。
最后,第二个条目 (ProvidePlugin) 在对全局 createjs
(在其他模块中)的所有请求之前使用 const createjs = require('createjs')
。