Node.js Can';在npm运行弹出后不要使用JSX

Node.js Can';在npm运行弹出后不要使用JSX,node.js,reactjs,npm,node-modules,npm-package,Node.js,Reactjs,Npm,Node Modules,Npm Package,我一直在关注,一周来我一直在努力解决这个问题: SyntaxError: TestComponent.js: Unexpected token (5:6) 3 | render() { 4 | return ( > 5 | <div> | ^ 6 | { this.props.children } 7 | </div> 8 | ) "babel": { "

我一直在关注,一周来我一直在努力解决这个问题:

SyntaxError: TestComponent.js: Unexpected token (5:6)

  3 |   render() {
  4 |     return (
> 5 |       <div>
    |       ^
  6 |         { this.props.children }
  7 |       </div>
  8 |     )
"babel": {
    "presets": [
      "@babel/env",
      "@babel/react"
    ]
  }
我试过几种方法,但都无法阻止错误的发生。我希望有人已经解决了这个问题,并能提供解决方案


非常感谢

TLDR:一步一步详细说明

自编写本教程以来,有几件事发生了变化,即以下是突破性的变化,除非另有列出,否则本教程中的其他步骤是相同的:

  • 您需要下载并使用
    babel cli
    ,以使自定义“lib”脚本命令正常工作:

    npm安装--保存dev@babel/cli

  • 您还需要在自定义“lib”脚本命令中下载并使用
    @babel/plugin transform-react jsx
    插件来编译和转换您的react代码,因为babel 6及以上版本不再有任何用于react的本机转换。当您希望仅与其他用户的本地JavaScript共享自定义组件时,这是必需的

    npm安装——保存dev@babel/plugin-transform-resact-jsx

  • 更新“lib”脚本命令以使用步骤2中列出的babel的JSX转换插件:

    “脚本”:{
    “开始”:“节点脚本/start.js”,
    “build”:“节点脚本/build.js”,
    “lib”:“babel--plugins@babel/transform-react jsx src/node_modules--out-dir-lib--copy files”,
    “test”:“节点脚本/test.js”
    },

  • 注意:您也不需要教程中列出的
    .babelrc
    文件,因为我们稍后将编辑
    webpack.config.js
    文件以正确传输
    JSX

    步骤1-3将允许您发布组件并与其他人共享组件,但您仍需根据本地发展进行调整,我将在下面介绍这些步骤:

  • 对于自定义组件的
    package.json
    请删除
    “main”
    入口点的
    .js
    扩展,因为这将导致以下情况。例如,下面是我的自定义组件的
    包.json

    {
    “私人”:没错,
    “名称”:“您的组件”,
    “主”:“/YourComponent”
    }

  • 现在,如果您尝试使用自定义组件在本地编译和运行应用程序,它将抛出一个错误,抱怨自定义组件的
    JSX
    语法:

    SyntaxError:YourComponent.js:意外标记(6:6)

    现在,如果您在本地运行,它应该可以工作:
    npm run start

    这些是帮助修复我的
    JSX
    投诉的主要步骤,这些投诉涉及在本地运行以及在npmjs上与其他人共享我的自定义组件。我用我的代码和详细的分步指南创建了一个公共git回购,可以找到它


    希望这有帮助

    看看教程,注意到它同时使用了“和”(不同风格的引号,我不知道正确的语言来正确引用它们)

    两者在外观上存在着非常细微的差异,但只有一个会被正确解释,另一个会导致错误。教程中的.babelrc使用了错误的引号样式


    如果您是从文章中复制和粘贴的,请检查以确保您使用的引号样式正确,并且应该是最接近键盘上Enter键的引号样式。

    您想要实现什么?创建一个使用JSX的库?您可以研究。我已经看到了几种方法。但是我喜欢最适合我要求的链接教程方法元素。因此,试图解决这个问题。PS:无论谁给我这个解决方案,我都会提供价值500英镑的奖金。提前谢谢。将你的文件重命名为
    TestComponent.jsx
    。这有帮助吗?@smac89没有帮助。没有。我没有复制和粘贴这些东西。教程中没有
    TestComponent
    。但我是为了测试它而做的。你猜完全错误。如果发生这种情况,您将不会看到jsx错误。请删除您的答案。因为,这与问题无关。事实上,这是我过去为纠正我自己做的教程中的问题而必须做的。很抱歉提供建议。祝您好运找到解决方案!是的,同意。但我永远不要复制粘贴代码。感谢您尝试帮助我。评论不适用于扩展讨论或调试会话;此对话已完成。请确保答案已包含所有相关信息。
      3 |   render() {
      4 |     return (
    > 5 |       <div>
        |       ^
      6 |         { this.props.children }
      7 |       </div>
      8 |     )
    
                ...
                 // Process application JS with Babel.
                // The preset includes JSX, Flow, TypeScript, and some ESnext features.
                {
                  test: /\.(js|mjs|jsx|ts|tsx)$/,
                  include: paths.appSrc,
                  loader: require.resolve('babel-loader'),
                  options: {
                    customize: require.resolve(
                      'babel-preset-react-app/webpack-overrides'
                    ),
                    presets: ['@babel/preset-env', '@babel/preset-react'],
                    plugins: [
                      [
                        require.resolve('babel-plugin-named-asset-import'),
                        {
                          loaderMap: {
                            svg: {
                              ReactComponent: '@svgr/webpack?-svgo,+ref![path]',
                            },
                          },
                        },
                      ],
                    ],
                    // This is a feature of `babel-loader` for webpack (not Babel itself).
                    // It enables caching results in ./node_modules/.cache/babel-loader/
                    // directory for faster rebuilds.
                    cacheDirectory: true,
                    cacheCompression: isEnvProduction,
                    compact: isEnvProduction,
                  },
                },
               ...