【问题标题】:Module parse failed: Unexpected token - React模块解析失败:意外的令牌 - 反应
【发布时间】:2020-06-08 22:22:12
【问题描述】:

我正在尝试将 react 组件创建为 npm 包,并关注此链接 https://medium.com/quick-code/publish-your-own-react-component-as-npm-package-under-5-minutes-8a47f0cb92b9,我对此很陌生。

这是我运行 npm.start 时遇到的错误

ERROR in ./src/index.js 6:4
Module parse failed: Unexpected token (6:4)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
|   const { width, height, color, text } = props;
|   return (
>     <div
|       style={{
|         width: width || 100,

我在网上查了一下,似乎 webpack.config 有问题,但我不确定我的哪里出了问题。

这些是我的文件

webpack.config

var path = require('path');
module.exports = {
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'build'),
    filename: 'index.js',
    libraryTarget: 'commonjs2'
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        include: path.resolve(__dirname, 'src'),
        exclude: /(node_modules|bower_components|build)/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['env']
          }
        }
      }
    ]
  },
  externals: {
    'react': 'commonjs react' 
  }
};

.babelrc

    {
    "presets": ["env"],
    "plugins": [
        "transform-object-rest-spread",
        "transform-react-jsx"
    ]
}

src/index.js

import React from "react";

const ReactColorSquare = props => {
  const { width, height, color, text } = props;
  return (
    <div
      style={{
        width: width || 100,
        height: height || 100,
        backgroundColor: color || "blue"
      }}
    >
      {text}
    </div>
  );
};

export default ReactColorSquare;

package.json

{
  "name": "reactnpmpackage",
  "version": "1.0.0",
  "description": "",
  "main": "build/index.js",
  "scripts": {
    "start": "webpack --watch",
    "build": "webpack",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "react": "^16.13.1",
    "webpack": "^4.43.0"
  },
  "devDependencies": {
    "babel-cli": "^6.26.0",
    "babel-core": "^6.26.3",
    "babel-loader": "^8.1.0",
    "babel-plugin-transform-object-rest-spread": "^6.26.0",
    "babel-plugin-transform-react-jsx": "^6.24.1",
    "babel-preset-env": "^1.7.0",
    "webpack-cli": "^3.3.11"
  }
}

这是我的项目结构

你能纠正我哪里弄错了吗..

【问题讨论】:

    标签: javascript reactjs npm babeljs


    【解决方案1】:

    试试@babel/preset-react。执行npm i --save-dev @babel/preset-react,然后将其添加到您的 .babelrc 文件中:

    // .babelrc
    
    {
      "presets": [
        "@babel/preset-env",
        "@babel/preset-react"
      ],
      "plugins": [
        "transform-object-rest-spread",
        "transform-react-jsx"
      ]
    }
    

    您也可以尝试将您的 libraryTarget 更改为通用模块定义:

    libraryTarget: 'umd'
    

    或者在 webpack.config 中将 mode: development 添加到您的 module.exports

    这几次为我解决了类似的问题。

    【讨论】:

    • 您好,谢谢回复,第一步我不太明白,我应该在哪里运行?
    • 我做到了,它也做同样的事情。 .babelrc 现在看起来像这样 { "presets": [ "env", "@babel/preset-env", "@babel/preset-react" ], "plugins": [ "transform-object-rest-spread", "transform-react-jsx" ] }
    • 您将在项目根文件夹的终端中运行npm install 命令。也许尝试删除“transform-react-jsx”插件,如果你有 preset-react 预设,你不应该需要它
    • 删除 "transform-react-jsx" 并尝试过,但同样的错误。
    • 在webpack,config中,我有entry: './src/index.js',是看到我上传的文件夹结构图片给的正确路径,是build/index.js我改成src/index.js希望是对的
    猜你喜欢
    • 1970-01-01
    • 2019-02-15
    • 2023-03-27
    • 2021-04-26
    • 2021-05-01
    • 2020-11-16
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    相关资源
    最近更新 更多