- 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/
像这样的webpack.config.js文件可以导出多个配置: module.exports = [{entry: 'a.js'}, {entry: 'b.js'}]; 当我调用 webpack 时
我正在尝试在 webpack 配置文件中设置 browserslist,但不知道如何执行此操作。 在 webpack.config 中尝试了以下内容: 'use strict'; module.exp
If you are using webpack v5 or above you do not need to install this plugin. Webpack v5 comes with t
使用webpack 2时,为什么需要以相反的顺序为“use:”键添加加载程序?为什么不从头到尾,从左到右列出每个加载器?有什么理由吗? 最佳答案 看起来像是一种约定,它很容易成为匹配执行顺序和源顺序的
当我 web pack 的时候 --watch --config webpack.production.config.js --mode production 我有这个错误: ERROR in Typ
我有一个使用 Twig 进行模板的项目。其中的所有数据都是静态的,但为了清楚起见,我已经在其他 Twig 文件中分离出部分页面(否则一个文件中会有数百行标记)。 我使用 webpack 作为构建工具,
我使用 cli 创建了一个 vue.js 项目。我使用了 webpack 模板。我已经为此工作了几天,并且工作顺利。 现在我需要向项目添加一个 npm 包。这个包建议我对 webpack 配置进行一些
我正在使用运行“node_modules/.bin/webpack”,但我知道可以配置路径以便您只需键入“webpack ”。不过,我找不到方法。 :/ 最佳答案 如果你安装一个包 globally
我正在服务器渲染我的 react 应用程序,如下所示: export default ({ clientStats }: { clientStats: any }) => async (req: Re
我试过包含一个通配符,它破坏了构建;和多个 favicon字段条目,它只使用最后一个输入。我如何支持使用此插件包含多个网站图标文件? 最佳答案 您还需要包括 favicons-webpack-pl
我正在使用 webpack 编译我的 Reactjs 文件。在我的项目中,我需要对后端进行 API 调用。 现在我有 3 个环境,分别是本地环境、开发环境和生产环境。 所以我有一个constants.
我正在将所有文件构建到“dist”文件夹中。 Dist ->index.html ->bundle.js 我已将配置设置为在我需要的特定端口上运行。 { entry: './src/ind
我想使用由 Closure Compiler 使用 Webpack 生成的 SourceMap,但我不知道该怎么做。 这是我的 webpack 配置: const ClosureCompiler =
有没有办法接收当前文件路径,就像在 requirejs 中一样? define(['module'], function (module) { console.log(module.uri)
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 4年前关闭。 Improve this questi
我是 webpack 的初学者用户。我想写一个webpack.config.js建立我的项目。但是有什么不对的地方! 这是我的 package.json (已安装所有依赖项): { "name":
我从这里开始:https://github.com/vuejs/vue-cli 我不确定它是否使用 Webpack。 包含/使用 webpack 的项目将包含哪些文件? 最佳答案 如果您的项目正在使用
Webpack,你将要了我的命。 html-webpack-plugin 在生产中运行良好。 'dist' 文件夹加载了我的 html 模板和插入的包。好酷。 但是,webpack-dev-serve
想象一下我有一个这样的项目: /moduleA/src... /moduleB/src... /mainApp/src... 每个模块和主应用程序都有一个单独的 webpack.config。模块是库
根据 webpack 文档,我尝试将 UglifyJSPlugin 添加到 webpack 4 项目中,但我仍然在我的包中看到死代码甚至注释,这让我认为我的 uglify 插件配置没有被使用。 Lin
我是一名优秀的程序员,十分优秀!