You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React项目执行npm start时plyr.min.js编译失败如何解决?

解决React项目npm start编译失败(plyr.min.js Unexpected token)问题

错误原因

报错中的??是空值合并运算符,你的Babel配置未启用该语法支持,且默认babel-loader不会转译node_modules目录下的文件,导致Plyr库中的未转译语法无法被Webpack解析。

解决方案

方案1:配置Babel支持空值合并运算符并转译Plyr模块

  1. 安装Babel插件
npm install @babel/plugin-proposal-nullish-coalescing-operator --save-dev
  1. 修改Babel配置文件(.babelrc或babel.config.json)
{
  "presets": ["react-app"],
  "plugins": ["@babel/plugin-proposal-nullish-coalescing-operator"]
}
  1. 修改Webpack配置让babel-loader处理Plyr模块
  • 若使用Create React App且未eject,推荐用react-app-rewired修改配置:

    • 安装依赖:
      npm install react-app-rewired customize-cra --save-dev
      
    • 项目根目录创建config-overrides.js:
      const { override, addBabelLoader } = require('customize-cra');
      
      module.exports = override(
        addBabelLoader({
          test: /\.js$/,
          include: /node_modules\/plyr/,
          plugins: ['@babel/plugin-proposal-nullish-coalescing-operator']
        })
      );
      
    • 更新package.json的启动脚本:
      "scripts": {
        "start": "react-app-rewired start",
        "build": "react-app-rewired build",
        "test": "react-app-rewired test"
      }
      
  • 若已eject项目,找到webpack.config.js中的babel-loader配置,添加Plyr到include列表:

    {
      test: /\.(js|mjs|jsx|ts|tsx)$/,
      include: [
        paths.appSrc,
        path.resolve(__dirname, 'node_modules/plyr')
      ],
      loader: require.resolve('babel-loader'),
      options: {
        // 保留原有配置,添加插件
        plugins: ['@babel/plugin-proposal-nullish-coalescing-operator']
      }
    }
    

方案2:降级Plyr到兼容版本

如果不想修改配置,可以尝试安装不使用空值合并运算符的旧版本Plyr:

npm install plyr@3.7.8 --save

验证

完成上述操作后,重新执行npm start,编译应该能正常通过。

内容的提问来源于stack exchange,提问作者Baiju

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 23:23:26