【问题标题】:xml is not transformedxml 没有被转换
【发布时间】:2018-11-12 11:38:57
【问题描述】:

我是 node.js 和 reactjs 的新手。我有下面的 index.js 文件作为我需要转译的小应用程序的入口点。

我正在使用 webpack,并且我有以下 package.json。

src/index.js

import React from 'react'
import { render } from 'react-dom'
import { hello, goodbye } from './lib'

render(
     <div>
        {hello} 
        {goodbye}
     </div>
    ,
    document.getElementById('react-container')
)

package.json

var webpack = require("webpack");

module.exports = {
    entry: "./src/index.js",
    output: {
        path: "dist/assets",
        filename: "bundle.js",
        publicPath: "assets"
    },
    devServer: {
        inline: true,
        contentBase: './dist',
        port: 3000
    },
    module: {
        rules: [
            {
                test: /\.js$/,
                exclude: /(node_modules)/,
                loader: "babel-loader",
                query: {
                    presets: ["latest", "stage-0", "react"]
                }
            },
            {
                test: /\.json$/,
                exclude: /(node_modules)/,
                loader: "json-loader"
            }
        ]
    }
}

如果我尝试构建,我会收到以下错误:

ERROR in ./src/index.js
Module parse failed: /home/mike/Desktop/Exercise_Files/Ch02/02_06/start/src/index.js Unexpected token (6:2)

文件夹结构如下:

.
├── dist
│   ├── bundle.js
│   ├── bundle.js.map
│   ├── index.html
│   └── main.js
├── node_module(+)
├── out.txt
├── package.json
├── src
│   ├── index.bbl.js
│   └── index.js
└── webpack.config.js

编辑

我知道错误是说它无法编译

工作 webpack.config.js

var webpack = require("webpack");

module.exports = {
    entry: "./src/index.js",
    output: {
        path: "dist/assets",
        filename: "bundle.js",
        publicPath: "assets"
    },
    devServer: {
        inline: true,
        contentBase: './dist',
        port: 3000
    },
    module: {
        loaders: [
            {
                test: /\.js$/,
                exclude: /(node_modules)/,
                loader: ["babel-loader"],
                query: {
                    presets: ["latest", "stage-0", "react"]
                }
            },
            {
                test: /\.json$/,
                exclude: /(node_modules)/,
                loader: "json-loader"
            },
            {
                test: /\.css$/,
                loader: 'style-loader!css-loader!autoprefixer-loader'
            },
            {
                test: /\.scss$/,
                loader: 'style-loader!css-loader!autoprefixer-loader!sass-loader'
            }
        ]
    }
}

编辑

Here 是上述问题的代码。

如果您对此有任何线索,请告诉我。

谢谢

【问题讨论】:

  • 什么是你好和再见?
  • @RohithMurali 这并不重要,因为错误不是TypeError: hello is not defined。错误是Unexpected token at 6:2,指的是&lt;,所以问题是transpiler没有期望代码中的JSX。
  • 为了验证这一点,您是否简单地尝试了render(&lt;div&gt;test&lt;/div&gt;,document.getElementById('react-container'))
  • @LevitatorImbalance 不平衡,我同意,但解决办法是什么??
  • @RohithMurali 我做了,但它仍然抱怨开放的尖括号。

标签: reactjs webpack jsx babeljs


【解决方案1】:

尝试像这样修改 babel 的配置查询:

...
query: {
    presets: ["latest", "stage-0", "react"],
    plugins: ["transform-react-jsx"]
}
...

我可以和你分享我自己的配置,但这很奇怪:D

显然,您应该首先通过npm 安装它。 更多信息您可以获取here :)

【讨论】:

  • 我同意我缺少 jsx 转译器,但插件标签适用于 .babelrc 文件,但是,我使用的是 webpack.config.js。我想我需要一种 jsx 加载器。如果我添加您的代码,我会得到: ./src/index.js 模块解析失败:/home/mike/Desktop/Exercise_Files/Ch02/02_06/start/src/index.js 意外令牌(6:2)跨度>
  • @MikeITExpert 试试 test: /\.(jsx|js)$/ 而不是你的
  • 还没有运气。 :-( 只是好奇什么是预设?
  • 我有来自在线课程 here 的工作代码我只是不明白为什么它可以工作,但不是我的。
  • @MikeITExpert 好吧,盒子里的 babel 转译了纯 js。 JSX 是一种自定义语法,因此 babel 应该包含一些插件来将其转换为纯 js 然后转译它:) 插件用于检测,应该转译哪些功能。还要问一下,你改配置后重启webpack dev server了吗?
猜你喜欢
  • 2019-04-11
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-03
  • 2016-07-17
  • 1970-01-01
相关资源
最近更新 更多