React / Babelify新手;如何修复“访问PropTypes”警告

时间:2017-06-18 09:22:28

标签: node.js reactjs babeljs browserify

我是React和Babelify的新手。

我正在使用Node编译Web应用程序。现在我正在这样做:

browserify({debug: true})
.transform(
  babelify.configure({
    comments : false,
    presets  : [ 
      "react",
      "babili",
    ],  
  })  
)   
.require('./app.js', {entry: true})
.plugin(collapse)
.bundle()
.on("error", function (err) {
  console.log("Error:", err.message);
})  
.pipe(fs.createWriteStream(destination));

我的应用程序非常简单“Hello,World!”关于这个复杂的概念证明:

class Renderer {
  render () {
    ReactDOM.render(
      <div>Hello, World!</div>
      document.querySelector("#react-app")
    );  
  }
}
module.exports = Renderer;

我收到了这个警告:

Warning: Accessing PropTypes via the main React package is deprecated, and 
will be removed in  React v16.0. Use the latest available v15.* prop-types
package from npm instead. For info on usage, compatibility, migration and more,
see https:/gfb.me/prop-types-docs

Warning: Accessing createClass via the main React package is deprecated, 
and will be removed in React v16.0. Use a plain JavaScript class instead. If
you're not yet ready to migrate, create-react-class v15.* is available on npm
as a temporary, drop-in replacement. For more info see
https:/gfb.me/react-create-class

Error: [BABEL] /home/gweb/code/app.js: Unknown option: 
/home/gweb/code/node_modules/react/react.js.Children. Check out
http:/gbabeljs.io/docs/usage/options/ for more information about options.

A common cause of this error is the presence of a configuration options 
object without the corresponding preset name. Example:

Invalid:
  `{ presets: [{option: value}] }`
Valid:
  `{ presets: [['presetName', {option: value}]] }`

For more detailed information on preset configuration, please see 
http:/gbabeljs.io/docs/plugins/#pluginpresets-options. (While processing
preset: "/home/gweb/code/node_modules/react/react.js") while parsing file:
/home/gweb/code/app.js

我阅读了推荐的内容,但我对两者都是新的,我无法理解它。我还阅读了一些其他文章和SO帖子,但没有一个(我能找到)有这个集合(browserify,babelify,react)。

我目前的目标只是通过支持React语法(从我理解的JSX)得到它,所以我可以开始玩它并学习两个库。实现这一目标的最快方法是什么(我不一定需要最有效或最好的;我宁愿在这个阶段拥有最容易理解的咒语,所以在我学习的时候我可以让事情变得透明。)

2 个答案:

答案 0 :(得分:6)

这不是您的设置问题,但问题在于您的导入语句,我假设您要从react中导入react和PropTypes

import React, { PropTypes } from 'react';

因此,如警告中所述,不推荐使用react库中的PropTypes,您需要从npm安装PropTypes作为独立库并使用它。

npm install prop-types --save然后再做,

import PropTypes from 'prop-types',了解更多信息https://www.npmjs.com/package/prop-types

这将解决您的第一次警告,同时还需要安装和使用https://www.npmjs.com/package/create-react-class的第二次警告。

对于babel错误,请检查您是否安装了两个必需的库。 https://www.npmjs.com/package/babel-preset-reacthttps://www.npmjs.com/package/babel-preset-babili

答案 1 :(得分:2)

您是否导入了import * as React from 'react'表单?

如果有,请尝试将其替换为import React from 'react'

*react导入所有内容,包括已弃用的导出,以及触发警告的内容。