fex-team / fis3-hook-node_modules

fis3 node_modules 支持
81 stars 12 forks source link

分支2.x开启 optimizer 后有问题 #24

Closed codering closed 8 years ago

codering commented 8 years ago

demo https://github.com/codering/form-demo/tree/fis3-npm-2.x

没压缩前(npm run dev), 在输入框里输入没有问题 压缩后(npm run release), 在输入框里输入会报错

image

2betop commented 8 years ago

初步来看是把 process.env.NODE_ENV 替换成 production 出现的问题,但是为何会这样还待分析,先升级到最新的 2.x 然后加上以下配置吧。

fis.hook('node_modules', {
  env: 'development', // 永远都替换成 development 
  ignoreDevDependencies: true // 忽略掉 dev 模块,可以提速。
})
codering commented 8 years ago

@2betop 升级到最新并加了上面的配置,有错

vendor.js:807 Uncaught ReferenceError: development is not defined
2betop commented 8 years ago

不好意思,配置错了, 应该用引号括起来。

fis.hook('node_modules', {
  env: '"development"', // 永远都替换成 development 
  ignoreDevDependencies: true // 忽略掉 dev 模块,可以提速。
})
codering commented 8 years ago

不设置env, 这个问题还存在的。 简单测试了下 process, react 开启uglify 后, 生成的代码就会有错,并不是全部,我现在用的antd的form表单才会出错

2betop commented 8 years ago

不知道为何,还是设置 env 吧。

codering commented 8 years ago

今天专门花时间排查这个了问题,发现antd依赖的rc-form (getFieldProps)不能用于纯函数组件。因为纯函数组件创建完成后owner就变为null。 不过蛋疼的是, 在非生产环境下 ,这个owner又不是null ,所以开发的时候看不出问题! react这坑啊。。。。

然后又回去翻了下官网文档,发现rc-from, antd官网都有写相关说明,不知道什么时候加上去的。。。。 https://github.com/facebook/react/pull/6534

2betop commented 8 years ago

原来如此