uni-app browesr NPM包后提示 ifdef错误

uni-app browesr NPM包后提示 ifdef错误

操作步骤:

如上面的描述

预期结果:

如上面的描述

实际结果:

如上面的描述

bug描述:

将npm包browesr后引入uniapp,但是因为npm的包中有ifdef(非自己写的,是其他包里自带的),uniapp遇到就会提示错误;

03:09:43.247 正在编译中...
03:09:44.383  INFO  Starting development server...
03:09:57.042 条件编译失败,参考示例(注意 ifdef 与 endif 必须配对使用):
03:09:57.042 // #ifdef  %PLATFORM%
03:09:57.046 js代码
03:09:57.047 // #endif
03:09:57.052  at node_modules/apis-core-nodejs/browser.js:1  

请问这种情况怎么解决呢。。。。。

![](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20210412/5467e15d1a34e1b7a05e5066e22f0f2f.png)
| 开发环境 | 版本号 | 项目创建方式 |
| --- | --- | --- |
| Windows | 10 | HBuilderX |
|  | 3.1.8 |  |

更多关于uni-app browesr NPM包后提示 ifdef错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app browesr NPM包后提示 ifdef错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是因为第三方NPM包中包含了uni-app条件编译语法(如#ifdef),但该语法在普通JS文件中无法被正确处理导致的。建议采用以下解决方案:

  1. 使用webpack配置排除该文件
    vue.config.js中配置chainWebpack,将该文件排除在编译之外:

    configureWebpack: {
      module: {
        rules: [
          {
            test: /browser\.js$/,
            loader: 'ignore-loader'
          }
        ]
      }
    }
    
  2. 修改包源码(临时方案)
    node_modules中找到对应文件,将条件编译语法注释或删除:

    // 将 #ifdef 改为普通注释
    /* #ifdef PLATFORM */
    // 原有代码
    /* #endif */
回到顶部