- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我看到 Babel 6 目前有三个预设:es2015、react 和 stage-x。我读到我可以在 .babelrc 中设置它们,如下所示:
{
"presets": ["es2015", "react", "stage-0"]
}
或者直接在 package.JSON 中,如下所示:
{
...,
"version": x.x.x,
"babel": {
"presets": ["es2015", "react", "stage-0"]
},
...,
}
我可以进一步将 babel-loader 与 webpack 一起使用,如下所示:
loader: 'babel?presets[]=es2015'
因此,为了干净整洁地编译所有内容,我将刚刚更新为可与 Babel6 一起使用的 babel-loader 添加到 webpack 配置中,如下所示:
module.exports = function(options) {
var jsLoaders = ['babel?presets[]=es2015'];
[...]
loaders: [
{
test: /\.js$/,
exclude: /node_modules/,
loaders: jsLoaders
},
{
test: /\.jsx$/,
exclude: /node_modules/,
loaders: options.production ? jsLoaders : ['react-hot'].concat(jsLoaders)
},
[...]
现在,当我在根目录中没有.babelrc
或package.JSON
中设置的预设选项进行编译时,即仅使用在中设置的babel-loader es2015预设在 webpack 配置中,我在 React 组件类中收到有关静态 propTypes 的意外标记错误:
ERROR in ./app/components/form/index.jsx
Module build failed: SyntaxError: /Library/WebServer/Documents/yarsk.test/app/components/form/index.jsx: Unexpected token (19:19)
17 | // ES6 React Component:
18 | export default class SurveyForm extends Component {
> 19 | static propTypes = {
| ^
在 GitHub 上,我被告知这是一个 stage-1
功能,即 transform-class-properties
。所以我想立即实现stage-0
。
但是
当我像上面一样添加 .babelrc
或定义 package.JSON
时,我收到一个非常奇怪的构建失败错误:
ERROR in ./app/components/form/index.jsx
Module build failed: Error: /Library/WebServer/Documents/yarsk.test/app/components/form/index.jsx: We don't know what to do with this node type. We were previously a Statement but we can't fit in here?
at NodePath.insertAfter (/Library/WebServer/Documents/yarsk.test/node_modules/babel-traverse/lib/path/modification.js:181:13)
at NodePath.replaceWithMultiple (/Library/WebServer/Documents/yarsk.test/node_modules/babel-traverse/lib/path/replacement.js:92:8)
at handleClassWithSuper (/Library/WebServer/Documents/yarsk.test/node_modules/babel-plugin-transform-class-constructor-call/lib/index.js:80:10)
at PluginPass.Class (/Library/WebServer/Documents/yarsk.test/node_modules/babel-plugin-transform-class-constructor-call/lib/index.js:101:11)
at newFn (/Library/WebServer/Documents/yarsk.test/node_modules/babel-traverse/lib/visitors.js:233:27)
at NodePath._call (/Library/WebServer/Documents/yarsk.test/node_modules/babel-traverse/lib/path/context.js:72:18)
at NodePath.call (/Library/WebServer/Documents/yarsk.test/node_modules/babel-traverse/lib/path/context.js:44:17)
at NodePath.visit (/Library/WebServer/Documents/yarsk.test/node_modules/babel-traverse/lib/path/context.js:102:12)
at TraversalContext.visitQueue (/Library/WebServer/Documents/yarsk.test/node_modules/babel-traverse/lib/context.js:151:16)
at TraversalContext.visitSingle (/Library/WebServer/Documents/yarsk.test/node_modules/babel-traverse/lib/context.js:111:19)
at TraversalContext.visit (/Library/WebServer/Documents/yarsk.test/node_modules/babel-traverse/lib/context.js:195:19)
at Function.traverse.node (/Library/WebServer/Documents/yarsk.test/node_modules/babel-traverse/lib/index.js:139:17)
at NodePath.visit (/Library/WebServer/Documents/yarsk.test/node_modules/babel-traverse/lib/path/context.js:106:22)
at TraversalContext.visitQueue (/Library/WebServer/Documents/yarsk.test/node_modules/babel-traverse/lib/context.js:151:16)
at TraversalContext.visitMultiple (/Library/WebServer/Documents/yarsk.test/node_modules/babel-traverse/lib/context.js:106:17)
at TraversalContext.visit (/Library/WebServer/Documents/yarsk.test/node_modules/babel-traverse/lib/context.js:193:19)
at Function.traverse.node (/Library/WebServer/Documents/yarsk.test/node_modules/babel-traverse/lib/index.js:139:17)
@ ./app/index.jsx 9:0-28
或者简而言之:模块构建失败:错误:/.../index.jsx:我们不知道如何处理此节点类型。我们以前是一个声明,但我们不能适应这里?
这就是我陷入困境的地方。当我能够像这样使用 babel-loader 进行编译并且一切正常时,我用 Babel5 编写了这个组件:
loader: 'babel?optional[]=runtime&stage=0
现在我在编译时遇到了上述错误。
babel-loader
问题还是 babel
问题?stage-0
,这样它就不会抛出错误?使用预设集进行编译并使用上述解决方法来解决类导出错误(在创建类之前不得导出类)时,预设集的顺序会更改错误消息。当我首先设置 stage-0
时,现在的错误是 'this' is not allowed before super() (这是内部节点上的错误。可能是内部错误)
当我将 stage-0
第二个或第三个放置时,我从上面收到有关语法错误的消息。
有关这些错误的最新进展 see my post或the new babel issue tracker on phabricator了解更多。 (从 6.2.1 开始编译基本上已修复,但现在还发生了其他事情)
本文提到的所有错误从 Babel 6.3.x 开始已完全修复。如果仍有问题,请更新您的依赖项。
最佳答案
我在这里遇到的两个相当严重的错误,即直接导出具有静态属性的 ES6 类和 ES6 构造函数的问题在此线程的答案中进行了讨论,并且可以在 GitHub 上明确找到这里(导出错误)和这里(构造函数错误)。 (GitHub 问题跟踪器已关闭,issues, bugs and requests have moved here 。)
(也许一两个更早,而不是 6.3.x 之前,这是我使用的版本,一切都像 Babel5 一样工作。祝大家编码愉快。)
<小时/>(仅供记录:)
因此,如果您在 CLI 中收到以下错误消息:
我们不知道如何处理此节点类型。我们以前是一个声明,但我们不能适应这里?
您可能正在导出具有这样或类似方式的静态属性的 ES6 类(请注意,这似乎不再与正在扩展的类相关,而是与具有静态属性的类相关)属性):
import React, { Component, PropTypes } from 'react'
export default class ClassName extends Component {
static propTypes = {...}
// This will not get compiled correctly for now, as of Babel 6.1.4
}
简单的解决方法 as mentioned by Stryzhevskyi以及 GitHub 上的几个人:
import React, { Component, PropTypes } from 'react'
class ClassName extends Component {
static propTypes = {...}
}
export default ClassName // Just export the class after creating it
第二个问题是关于以下错误:
在 super() 之前不允许使用“this”(这是内部节点上的错误。可能是内部错误)
尽管是合法规则as pointed out by Dominic Tobias这是一个已确认的错误,具有自己属性的扩展类似乎会抛出此消息或类似的消息。就目前而言,我还没有看到任何解决此问题的方法。现在很多人都因为这个原因回滚到 Babel5(截至 6.1.4)。
据说这个问题在 Babel 6.1.18 的发布中得到了修复(参见上面的 GitHub 问题),但是人们,包括我在内,仍然看到同样的问题发生。
另请注意,目前加载 babel 预设 stage-x
、react
和 es2015
的顺序似乎很重要并且可能会改变你的输出。
这两个错误都已修复,代码可以正常编译。 但是... 还有一个问题可能会影响很多使用 React 的人,它会抛出 ReferenceError: this isn't beinitialized - super() has not be called
在运行时。 Referenced here 。敬请关注...
(也许一两个更早,而不是 6.3.x 之前,这是我使用的版本,一切都像 Babel5 一样工作。祝大家编码愉快。)
关于reactjs - 如何使用 React 和 Webpack 设置 Babel 6 stage 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33455166/
我正在为我的 React 项目设置 Webpack,并对 babel 感到困惑, babel-core , babel-loader , babel-preset-2015和babel-preset-
所有这些 babel 依赖项是什么?它们各自的用途是什么,它们有何不同?我应该为我的 nodejs 网络应用程序使用哪一个? 我已经查看了 API 网站,但是否有任何指南可以将这些内容转化为简单的人类
我的 Node Webpack 项目使用了三个 babel 库。它们之间有什么区别以及如何使用它们? "dependencies": { "babel-runtime": "^5.8.24" }
我用 @babel/core 替换了 babel-core 而 babel-loader 期望 babel-core: { "name": "myproject-ui", "version":
我尝试配置一个环境来使用 babel 和 webpack 开发 javascript。 但是我不明白关于presets的babel配置. 在 Usage Guide ,我们可以看到预设为 "@babe
我已经安装了 babel 7.5,理想情况下它应该以 preset-env 包为目标,但不确定它为什么要寻找“babel-preset-es2015”。 你们能告诉我我做错了什么吗?下面是我的代码 p
我正在更新a boilerplate中使用的babel包,从 babel-core、babel-register 等到@babel/core、@babel/register > 等 问题:在 npm
设置 通天塔 6 (^6.0.0), Node 5.4.0,Express 4.13.x, babel-node 和 babel-register 都有警告,禁止在生产环境中使用babel.io 网站
我正在尝试转换编译我的 react/es6 代码并且来自 browserify。由于新的 babel 6 版本以及大多数教程现在已经过时的事实,我正在努力创建一个 webpack 构建。这适用于我的
我有一个使用 Typescript 和 @babel/preset-env 的项目。与 Webpack 捆绑失败并显示此错误和以下配置。 如果我取消注释该行,这会强制 @babel/plugin-pr
我在浏览器中使用 babel -> babel-standalone 现在我想使用 ES decorator 语法。但是所有的通天塔doc intro 是服务器端的 babel,比如 ` { "p
我正在编写对从 cdnjs.com 引入的所有这些库的 react 。但是,我发现它报告错误:'Uncaught TypeError: Cannot read property 'keys' of u
我正在使用 babel v7.6.x 并设置了以下内容。 包.json "scripts": { "dev": "nodemon --exec babel-node bin/index.js
我正在学习巨大的 JavaScript 生态系统,但我无法理解以下内容。 Babel 是一个编译器,来自官网: Babel is a toolchain that is mainly used to
在我使用yarn add -D babel-plugin-react-relay安装relay-query插件后,并在运行开发服务器后,我收到此错误: Error: [BABEL] /Users/ne
我使用 babel 6 和 React 插件,并按照文档说明设置转译过程。我已经阅读过要让 React 工作,我需要使用 es2015 和 React preset。最初,使用这两个预设一切都运行良好
我对 Babel 选项/配置有点迷失。我想使用最新的 js 功能并编译(使用 webpack)为浏览器代码。 babel-polyfill 和有什么区别和 babel plugins与 babel-p
这个问题在这里已经有了答案: Babel file is copied without being transformed (10 个答案) 关闭 6 年前。 我只是使用 npm (npm inst
安装时 npm install browserify babelify babel-preset-es2015 我正面临以下警告信息 npm WARN deprecated babel-preset-
什么版本的标准? 12.0.1 什么操作系统、Node.js 和 npm 版本? 视窗 10, 节点 v10.15.1, NPM v.6.8.0 你期望会发生什么? 我在 devDependencie
我是一名优秀的程序员,十分优秀!