React app适用于15.6.2,中断16.0.0

时间:2017-10-12 06:12:24

标签: javascript reactjs webpack babeljs

我正在升级到React v16。发布文档表明&#34;除了少数例外情况,如果你的应用程序在没有任何警告的情况下在15.6中运行,它应该在16中运行。&#34;我的应用程序在15.6.2上运行正常(并且没有警告),但在16.0.0完全没有,在尝试运行包时抛出奇怪的错误: Uncaught TypeError: Cannot read property 'string' of undefined加载其中一个捆绑文件时Uncaught TypeError: Cannot read property 'string' of undefined"加载另一个捆绑文件时ReactDOM.render(( <Router> <div> <Route component = { Header } /> <Switch> <Route exact path = '/' component = { Home } /> <Route exact path = '/index.html' component = { Home } /> <Route path = "/browse" component = { Browse } /> . . . . . . . etc. . . . . </Switch> <Route component = { Footer } /> </div> </Router> ), document.getElementById("main"))

我怀疑这段代码是不兼容的来源:

from selenium import webdriver
driver = webdriver.PhantomJS()
address = 'https://www.trustnet.com/factsheets/o/g6ia/ishares-global-property-securities-equity-index-uk'
xpath = '//*[@id="factsheet-tabs"]/fund-tabs/div/div/fund-tab[3]/div/unit-details/div/div/unit-information/div/table[2]/tbody/tr[3]/td[2]'
price = driver.find_element_by_xpath(asset['xpath'])
print price.text
driver.close()

我在任何生命周期方法之外渲染此AFAIK,此代码是我的webpack配置文件中应用程序的入口点。

如果它有用,我很乐意附加更多的构建脚手架。该应用程序在15.6.2下完美运行。

1 个答案:

答案 0 :(得分:1)

  

未捕获的TypeError:无法读取属性&#39; string&#39;未定义的

这看起来像是由

之类的代码引起的
MyComponent.propTypes = {
  something: React.PropTypes.string
};

这是因为PropTypes已被移动到React 16中的单独包中:

MyComponent.propTypes = {
  something: PropTypes.string
};

此代码 在15中发出警告,因此如果您没有看到警告,则说明您的设置可能有问题。例如,您可能在开发中错误地使用了React的生产版本,因此没有看到警告。

看到您使用了React Router,请确保将其更新为与React 16兼容的版本。最新的3.x和4.x版本都兼容。