SounJS 번들은 그것이 브라우저에서 최상위 스크립트로 장전 강한 가정을 만드는 번들의 적절한 CommonJS 또는 ES6의 형식이 아닙니다. 그래서 먼저 (이 창을 것으로 가정되는) this
에 속성에 할당하여 글로벌 가치를 만들려고하고 단지 createjs
으로이 글로벌 값에 액세스하려고합니다. 분명히 이것은 모듈 컨텍스트에서 작동하지 않습니다.
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'),
}
},
제 3 항목 (resolve.alias) 파일에 createjs
의 수입을 매핑합니다
대안으로하지만, 코드 (웹팩 1 인) this comment을 기반으로 웹팩 2이고있다 나는 다운로드하여 내 lib
폴더에 배치했다. (npm에서 사용하는 것만 큼 우아하지는 않지만 지금은 내가 얻은 것이 확실하다 .npm 버전도 잘 동작 할 것이다).
첫 번째 항목 (module.rules)
는 웹팩가 먼저 전역 (창) 컨텍스트에서
createjs
인스턴스를 가지고 가고 모듈 수출하기 위해 다음
window
와
this
을 대체하고 알려줍니다.
마지막으로 두 번째 항목 (ProvidePlugin)은 createjs
(다른 모듈에서)에 대한 모든 요청 앞에 const createjs = require('createjs')
이옵니다.
은 매우 즐거운 개발자 경험을 제공하는 다른 패키지 https://www.npmjs.com/package/soundmanager2를 사용하여 종료. 그러나, 나는 여전히 soundJS의 문제점이 무엇인지 알고 싶습니다. – jptiilik