语境
我有一个webpack.config.js这样的:
/* Something here */
module.exports = {
entry: {
main: './src/index.js'
},
output: {
library: 'MyClass',
libraryTarget: 'umd',
path: path.resolve(__dirname, 'lib'),
filename: `package.js`
},
...
}
我的./src/index.js样子是这样的:
import MyClass from 'src/myClass'
import 'src/myStyle.css'
export default MyClass
问题
尽管这可以正常工作,但它会将MyClass类公开给window对象,如下所示:
console.log(window.MyClass)
=> Module {default: ƒ, __esModule: true, Symbol(Symbol.toStringTag): "Module"}
这样,我无法通过使用以下方式调用我的班级:
new MyClass();
=> TypeError: Slidery is not a constructor
我必须像这样调用它:
new MyClass.default();
=> MyClass { ... }
我可以通过在我的代码中执行以下操作来解决该问题./src/index.js:
const MyClass = require('src/myClass')
module.exports = MyClass
/* in browser */
new MyClass()
=> Good, works fine
但是,通过这种方式,我无法创建import样式表:
const MyClass = require('src/myClass')
import 'src/myStyle.css'
module.exports = MyClass
=> TypeError: Cannot assign to read only property 'exports' of object '#<Object>'
编辑
以下方法也可以解决问题,但无需使用即可完成export:
/* webpack.config.js */
module.exports = {
entry: {
main: './src/index.js'
},
output: {
/* Need to remove library related props */
// library: 'MyClass',
// libraryTarget: 'window',
path: path.resolve(__dirname, 'lib'),
filename: `package.js`
},
...
}
/* ./src/index.js */
import MyClass from 'src/myClass'
import 'src/myStyle.css'
window.MyClass = MyClass
问题
是否有针对的WebPack我的方式export直接向全球的模块,而不必与调用.default ,并在同一时间import在入口文件样式表?
qq_笑_17
Cats萌萌
相关分类