问题解析:node
babel 7 开始,在使用 .babelrc 的状况下,默认忽略 node_modules,致使 node_modules 中systemlink 的 模块源码没法被正常编译react
解决方法:webpack
改成 babel.config.js 进行 babel 配置描述,能够顺利进行 systemlink 模块的编译,并提升配置的灵活性git
问题描述:github
同构两端 的 style-name 编译事后,class name 后缀的 hash 不一致web
问题解析:babel
查看 css-loader 源码,css-loader 与 babel-react-css-module 的配置项中,有个 context 的输入项,用于生产 hash。context 可为任意的 字符串,可是,context 在 css-loader 源码中会被 path resolve (context 与 resourcePath),若是 context 不是一个有效的路径字符串,那么同构两侧最终用于生产 hash 的依据会不一致ide
问题解决:模块化
a、将同构两侧的 css-loader 中的 context 统一改成当前项目的根路径
b、得益于使用 babel.config.js,为同构两端的 react-css-module 动态设置 context 为当前项目的根路径;
结果:
同构两端生产的 class 命名一致,同时保留 css-modules 特性
问题描述:
同构端获取客户端源码文件后,进行打包,打包后的代码没法在服务端进行运行,提示 “__webpack__require(…) is not a function”或者 模块初始化后没有正常 export
问题解析:
针对 webpack 配置,将输出 bundle 模块化形式改成可直接被 nodejs 读取使用的 commonjs 形式(commonjs2)
问题描述:
同构端 无需运行 preset-env
问题解决:
在同构端 的 babel.config.js 中,去除 preset-env
问题描述:
同构端 复用 客户端的打包配置,打包过程当中,报错 媒体文件(图片,公共样式)没法 找到
问题解析 与 解决:
同理 css-loader,须要对同构端的 resolve-url-loader 的 root 指定为客户端模块的对应的资源目录
没法避免的问题,用于同构处理的客户端模块,必须考虑被同构使用时的兼容性处理,并不是全部的客户端模块能够直接被用于同构