SilurianYang / uni-simple-router

A simple, lightweight 'uni-app' routing plugin
https://v2.hhyang.cn/v2/
MIT License
749 stars 163 forks source link

yarn build上线运行报错 #404

Closed hdtopku closed 2 years ago

hdtopku commented 2 years ago

问题描述 [问题描述:尽可能简洁清晰地把问题描述清楚] 开发环境使用正常,上线后,打开页面浏览器报如下错误

chunk-vendors.8c9100ba.js:39 Uncaught TypeError: Cannot set properties of undefined (setting 'default')
    at o (chunk-vendors.8c9100ba.js:39:10)
    at index.c75ab64a.js:1:32648
    at index.c75ab64a.js:1:33475
    at 3f72 (index.c75ab64a.js:1:33939)
    at d (index.c75ab64a.js:1:812)
    at 813e (index.c75ab64a.js:1:82230)
    at d (index.c75ab64a.js:1:812)
    at 56d7 (index.c75ab64a.js:1:38257)
    at d (index.c75ab64a.js:1:812)
    at 0 (index.c75ab64a.js:1:2531)

复现步骤 [复现问题的步骤] yarn dev正常运行,yarn build上线后报如上错误

[或者可以直接贴源代码] router.js

// router.js
import {
  RouterMount,
  createRouter
} from 'uni-simple-router';
const scrollInfo = {};

const router = createRouter({
  platform: process.env.VUE_APP_PLATFORM,
  routes: [...ROUTES,
    // {
    //   path: '*',
    //   redirect: (to) => {
    //     return {
    //       name: 'index'
    //     }
    //   }
    // },
  ],
  h5: {
    scrollBehavior: (to, from, savedPosition) => {
      const XY = scrollInfo[to.path];
      if (XY) {
        return XY;
      }
      return savedPosition;
    }
  }
});
//全局路由前置守卫
router.beforeEach((to, from, next) => {
  if (from.meta.keepScroll === true) {
    scrollInfo[from.path] = {
      x: window.scrollX,
      y: window.scrollY
    }
  }
  next();
});
// 全局路由后置守卫
router.afterEach((to, from) => {})

export {
  router,
  RouterMount
}

vue.config.js

//vue.config.js
const TransformPages = require('uni-read-pages')
const {
  webpack
} = new TransformPages()
module.exports = {
  configureWebpack: {
    plugins: [
      new webpack.DefinePlugin({
        ROUTES: webpack.DefinePlugin.runtimeValue(() => {
          const tfPages = new TransformPages({
            includes: ['path', 'name', 'aliasPath', 'meta']
          });
          return JSON.stringify(tfPages.routes)
        }, true)
      })
    ],
    performance: {
      hints: 'warning',
      // 入口起点的最大体积
      maxEntrypointSize: 50000000,
      // 生成文件的最大体积
      maxAssetSize: 30000000,
      // 只给出 js 文件的性能提示
      assetFilter: function(assetFilename) {
        return assetFilename.endsWith('.js')
      }
    }
  },
  transpileDependencies: ['uni-simple-router']
}

main.js

import {router,RouterMount} from './router.js'  //路径换成自己的
Vue.use(router)

//v1.3.5起 H5端 你应该去除原有的app.$mount();使用路由自带的渲染方式
// #ifdef H5
RouterMount(app,router,'#app')
// #endif

// #ifndef H5
app.$mount(); //为了兼容小程序及app端必须这样写才有效果
// #endif

pages.json

"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
  {
    "path": "pages/index/index",
    "aliasPath": "/index",
    "name": "index",
    "meta": {
      "keepScroll": true
    },
    "style": {
      "navigationBarTitleText": "uni-app"
    }
  }, {
      "path": "pages/test/test",
      "aliasPath": "/test/:id",
      "name": "test",
      "meta": {
        "keepScroll": true
      },
      "style": {
        "navigationBarTitleText": "",
        "enablePullDownRefresh": false
      }
    }
  ]

test.vue

<template>
<view>
  <div class="item" v-for="(item,index) in 10" :key="index">{{item}}</div>
  </view>
</template>

<script>
  export default {
    data() {
      return {

      }
    },
    onLoad(...options) {
      //  自己打印来看看咯
      console.log(options)
      console.log(this.$Route)
    },
    methods: {

    }
  }
</script>

<style>
  .item {
    height: 200rpx;
    background-color: #F0AD4E;
    margin-bottom: 30rpx;
  }
</style>

预期结果 yarn build能正常运行

实际结果 [这里请贴上你的报错截图或文字] image

系统信息:

补充信息 [可选] [根据你的分析,出现这个问题的原因可能在哪里?] yarn dev正常, yarn build也没报错,打开页面时报错,也没有错误提示,猜不到原因

chunk-vendors.8c9100ba.js:39 Uncaught TypeError: Cannot set properties of undefined (setting 'default')
    at o (chunk-vendors.8c9100ba.js:39:10)
    at index.c75ab64a.js:1:32648
    at index.c75ab64a.js:1:33475
    at 3f72 (index.c75ab64a.js:1:33939)
    at d (index.c75ab64a.js:1:812)
    at 813e (index.c75ab64a.js:1:82230)
    at d (index.c75ab64a.js:1:812)
    at 56d7 (index.c75ab64a.js:1:38257)
    at d (index.c75ab64a.js:1:812)
    at 0 (index.c75ab64a.js:1:2531)
SilurianYang commented 2 years ago

升级到新版本插件试试呢?或者给我一个可访问的地址 我排查下

hdtopku commented 2 years ago

升级到新版本插件试试呢?或者给我一个可访问的地址 我排查下

升级到:2.0.8-beta.4,也没用

vue版本:"vue": "^2.6.11"

地址:https://am.taojingling.cn/pages/test/test?c=q2yra

SilurianYang commented 2 years ago

我可以正常访问 Snipaste_2022-06-10_17-01-11

hdtopku commented 2 years ago

我可以正常访问 Snipaste_2022-06-10_17-01-11

我刚刚切换了,我现在切换过来,你再访问一下

SilurianYang commented 2 years ago

还是可以访问呀

hdtopku commented 2 years ago

我现在切换回去了,你现在访问一下,就报错了

hdtopku commented 2 years ago

还是可以访问呀

你再访问一下,现在就有报错了

SilurianYang commented 2 years ago

请把项目发我 我现在排查

hdtopku commented 2 years ago

请把项目发我 我现在排查

好的,稍等,马上

hdtopku commented 2 years ago

请把项目发我 我现在排查

代码已发

yarn dev环境下正常运行,yarn build没报错,访问的时候就报错了

https://t.wss.ink/f/8izbbrk3rxp 复制链接到浏览器打开

hdtopku commented 2 years ago

nginx配置

server {
    listen 443 ssl;
    server_name am.taojingling.cn;
    location / {
        if ($request_filename ~* .*\.(?:htm|html)$) {
          add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
          access_log on;
        }
        root  /usr/share/nginx/html/uni-shop;
        index  index.html index.htm;
        try_files  $uri $uri/ /index.html;
    }
}
SilurianYang commented 2 years ago

你玩我呢?

    {
      "path": "pages/test/test",
      "aliasPath": "/test/:id",
      "style": {
        "navigationBarTitleText": "",
        "enablePullDownRefresh": false
      }
    }

你的访问路径应该为 https://am.taojingling.cn/test/xxx

hdtopku commented 2 years ago

你好,不要生气。你说的问题是路径不存在 你再访问一下,线上:https://am.taojingling.cn/test/xxx 报错信息如下,并不是你说的我访问路径不对导致的报错:

chunk-vendors.8c9100ba.js:39 Uncaught TypeError: Cannot set properties of undefined (setting 'default')
    at o (chunk-vendors.8c9100ba.js:39:10)
    at index.20505a3e.js:1:32648
    at index.20505a3e.js:1:33475
    at 3f72 (index.20505a3e.js:1:33939)
    at d (index.20505a3e.js:1:812)
    at 813e (index.20505a3e.js:1:82230)
    at d (index.20505a3e.js:1:812)
    at 56d7 (index.20505a3e.js:1:38257)
    at d (index.20505a3e.js:1:812)
    at 0 (index.20505a3e.js:1:2531)
SilurianYang commented 2 years ago

worker_processes 1;

events { worker_connections 1024; }

http { include mime.types; default_type application/octet-stream;

sendfile        on;

keepalive_timeout  65;

server {
    listen       80;
    server_name  127.0.0.1;

    location / {
        if ($request_filename ~* .*\.(?:htm|html)$) {
            add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
            access_log on;
        }
        root  html/uni-shop;
        index  index.html index.htm;
        try_files  $uri $uri/ /index.html;
    }

}

}


* 文件目录
```sh
/f/nginx-1.18.0/html/uni-shop
hdtopku commented 2 years ago

nginx.conf

感谢,你这个确实没问题,应该是我的问题,今天我排查一下,找出原因我在这里反馈。

hdtopku commented 2 years ago

可能的原因:js文件超过500kb,已跳过压缩以及 ES6 转 ES5 的处理,导致es6语法存在兼容性问题,所以可能要先解决js文件过大的问题。并非uni-simple-router的bug

警告⚠] `../node_modules/@dcloudio/uni-h5/dist/index.umd.min.js` 文件体积超过 500KB,已跳过压缩以及 ES6 转 ES5 的处理,手机端使用过大的js库影响性能。
SilurianYang commented 2 years ago

不会因为这个东西导致了 可能是你nginx的问题 你先排查hash是否正常

hdtopku commented 2 years ago

不会因为这个东西导致了 可能是你nginx的问题 你先排查hash是否正常

不是nginx的问题,好像是和uview冲突了。以下代码,本地也可以复现这个错误了。你看看能不能找到原因,我是完全看不懂。

https://t.wss.ink/f/8j31ia78a19 复制链接到浏览器打开

1、yarn 2、hbuilderx运行 3、打开:http://localhost:8080/test/test

复现图片

SilurianYang commented 2 years ago

好的 明天我会查看 刚关电脑

SilurianYang commented 2 years ago

我测试了你的新包 没有任何问题,请你换个浏览器 或者清除缓存重新打开试试 再不行重启电脑

hdtopku commented 2 years ago

我测试了你的新包 没有任何问题,请你换个浏览器 或者清除缓存重新打开试试 再不行重启电脑

node版本有影响吗?16.14.2会不会版本太高了 ➜ node -v v16.14.2

我刚刚把代码下载了,yarn && yarn dev,重启、换浏览器还是一样有问题 图片

SilurianYang commented 2 years ago

现在的问题看起来和插件没有任何关系 你应该排查 Babel 或者环境问题

hdtopku commented 2 years ago

现在的问题看起来和插件没有任何关系 你应该排查 Babel 或者环境问题

好的,我看看环境的问题,找到问题再回来反馈,感谢。

hdtopku commented 2 years ago

git打不开,用qq邮箱回复了。 参考 因为我是vue-cli创建的uniapp项目,babel存在兼容性问题 注释掉babel.config.js中的modules: 'commonjs',错误消失,程序正常启动

------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2022年6月11日(星期六) 下午4:03 收件人: @.>; 抄送: @.>; "State @.>; 主题: Re: [SilurianYang/uni-simple-router] yarn build上线运行报错 (Issue #404)

现在的问题看起来和插件没有任何关系 你应该排查 Babel 或者环境问题

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you modified the open/close state.Message ID: @.***>

hdtopku commented 2 years ago

好的,辛苦,感谢

---原始邮件--- 发件人: @.> 发送时间: 2022年6月11日(周六) 凌晨2:29 收件人: @.>; 抄送: @.>;"State @.>; 主题: Re: [SilurianYang/uni-simple-router] yarn build上线运行报错 (Issue #404)

好的 明天我会查看 刚关电脑

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you modified the open/close state.Message ID: @.***>