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

NX工作区React项目使用NativeBase出现Module parse failed错误如何解决?

NX工作区React项目NativeBase模块解析错误解决方案

错误原因

NativeBase v3.x源码包含未编译的JSX、ES6+语法,NX默认Webpack配置仅转译项目源码文件,不会处理node_modules下的native-base及其依赖包,因此触发loader缺失报错。

解决步骤

1. 安装缺失依赖

web端使用NativeBase需要依赖react-native-web适配层,首先安装对应依赖:

npm install react-native-web react-native-svg-web
# 或yarn add react-native-web react-native-svg-web

同时废弃已停止维护的babel-preset-es2015,替换为@babel/preset-env:

npm uninstall babel-preset-es2015
npm install @babel/preset-env --save-dev

2. 调整Webpack配置

在你当前NX项目的根目录下找到webpack.config.js(如果没有可以通过NX生成自定义配置),添加规则将native-base相关包加入babel转译范围:

const { composePlugins, withNx } = require('@nrwl/webpack');
const { withReact } = require('@nrwl/react');

module.exports = composePlugins(withNx(), withReact(), (config) => {
  // 新增babel-loader处理native-base相关模块
  config.module.rules.push({
    test: /\.(js|jsx|ts|tsx)$/,
    include: [
      /node_modules\/native-base/,
      /node_modules\/react-native/,
      /node_modules\/@react-native-aria/,
      /node_modules\/react-native-vector-icons/
    ],
    use: {
      loader: 'babel-loader',
      options: {
        presets: ['@babel/preset-env', '@babel/preset-react'],
        plugins: ['react-native-web']
      }
    }
  });

  // 添加模块别名适配react-native
  config.resolve.alias = {
    ...config.resolve.alias,
    'react-native$': 'react-native-web',
  };
  config.resolve.extensions.push('.web.js', '.web.jsx', '.web.ts', '.web.tsx');

  return config;
});

3. 调整Babel配置

在工作区根目录或项目根目录的babel.config.json中添加对应预设与插件:

{
  "presets": [
    "@nrwl/react/babel",
    ["@babel/preset-env", { "targets": { "browsers": "last 2 versions" } }]
  ],
  "plugins": [
    "react-native-web"
  ]
}

4. 清理缓存重启服务

执行命令清理NX缓存后重启开发服务:

nx reset
nx serve <你的项目名>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:18:05