Skip to content

升级webpack4后import commonjs模块出现问题的分析 #4

@iulo

Description

@iulo

原因

相对于webpack3 webpack4改变了 dynamic import()的行为
import(cjs) 这种场景下,webpack3会把module.exports返回来,webpack4会包装一层成object = { default: xx }返回来,并把default的properties assign到这个object上,方便解构使用

medium说明
https://medium.com/webpack/webpack-4-import-and-commonjs-d619d626b655

解决方案

建议处理方式:

const mod = await import('cjsModule')
const classFunc = mod.default || mod // 如果默认导出的是个class(即function),建议这样取

补充信息

测试用例
webpack/webpack@7a34977

测试用例2
测试用例3
测试用例:https://github.com/webpack/webpack/blob/master/test/cases/mjs/non-mjs-namespace-object-lazy/index.js

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions