使用webapck打包的库无法使用import语法引入

发布于 2022-09-12 02:14:44 字数 1805 浏览 22 评论 0

问题
开发一个React组件想发布到npm上,发现无法使用 import 语法导入使用组件
组件部分程序

class KeyboardNavigation extends Component {
    ...
}

export default KeyboardNavigation;

将组件进行打包,webpack部分配置文件如下:

module.exports = {
  mode: 'production',
  entry: {
    main: './src/keyNav.js'
  },
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist'),
    libraryTarget: 'umd',
    library: 'keyboardnavigation'
  }

package.json 部分配置文件如下:

{
  "name": "keyboardnavigation",
  "main": "dist/bundle.js",
  
}

打包完成后引用打包后的文件dist下的 bundle.js 进行测试:

 import KeyNav from '../dist/bundle';
 ReactDOM.render(<KeyNav />, document.getElementById('root'))

使用 import 语法时就会报错。
现在使用 CommonJS,修改上述文件。
组件部分程序

class KeyboardNavigation extends Component {
    ...
}

module.exports = { KeyboardNavigation };

将组件进行打包,webpack部分配置文件如下:

module.exports = {
  mode: 'production',
  entry: {
    main: './src/keyNav.js'
  },
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist'),
    libraryTarget: 'umd',
    library: 'keyboardnavigation'
  }

package.json 部分配置文件如下:

{
  "name": "keyboardnavigation",
  "main": "dist/bundle.js",
  
}

打包完成后引用打包后的文件dist下的 bundle.js 进行测试:

 const { KeyNav } = require('../dist/bundle');
 ReactDOM.render(<KeyNav />, document.getElementById('root'))

此时就不会报错。
请问这是怎么回事,能直接使用打包后的文件进行测试吗?
找了一天原因也没有找到,哪位大佬知道麻烦解答一下,感激不尽。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文