A痞子  2023-02-02 10:47 采纳率: 73.8%
浏览 49
已结题

为何无法调用我封装的函数?

为何无法调用我封装的函数?
common/Function.js 文件代码

const BASE_URL = `http://localhost:9090`

export const request = (options) => {  // {url: '', method: '', data: {}}
    return new Promise((resolve, reject) => {
        uni.request({
            url: options.url,
            method: options.method || 'GET',
            header: {token: uni.getStorageSync('user') ? uni.getStorageSync('user').token : ''},
            data: options.data || {},
            success: (res) => {
                const data = res.data
                if (data.code === '401') {  // 401表示无权限
                    uni.navigateTo({
                        url: '/pages/login/login'
                    })
                    return
                } else if(data.code !== '200') {
                    uni.showToast({
                        icon: 'error',
                        title: '操作错误'
                    })
                }
                resolve(data) 
            },
            fail: (error) => {
                uni.showToast({
                    icon: 'error',
                    title: '系统错误'
                })
                reject(error)
            }
        })
    })
}

main.js文件代码

import App from './App'

// #ifndef VUE3
import Vue from 'vue'
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
    ...App
})
app.$mount()
// #endif

// #ifdef VUE3
import { createSSRApp } from 'vue'

import {request} from "/common/Function.js";
Vue.prototype.request=request

export function createApp() {
  const app = createSSRApp(App)
  return {
    app
  }
}
// #endif
//设置全局变量,页面调用方法如下:
//     console.log(this.$baseUrl);
Vue.prototype.$baseUrl = "http://localhost/app/1.asp"//设置全局变量

index.vue 文件的代码


<template>    <view>
<view class="box1">
    <view class="box4" style="text-align:center">
    <view class="box2" style="height: 40rpx;background: #C6FFC6;"><text  Selection space="ensp" >借用登记</text></view>
    <view class="box3" style="height: 40rpx;background: #00CCFF;"><text  Selection space="ensp">搜索查找</text></view>
    </view>
</view>
<view v-for="(item,index,l11_30) in a2 " class="box1" :key="index" :style="item.l11_30==true?'background-color:#FFB9DC':'background-color:#CCCCCC'" @click="jyjsbj(item.l11_1)">
<view class="box4">
<view class="box2"><text  Selection space="ensp">借用时间:{{item.l11_4}} </text></view>
<view class="box3"><text  Selection space="ensp">记单人:{{item.l11_14}}</text></view>
</view>
<view class="box4">
<view class="box2"><text  Selection space="ensp">借用人:{{item.l11_10}} </text></view>
<view class="box3"><text  Selection space="ensp">借用教室:{{item.l11_11}}</text></view>
    </view>
    <view class="box4">
    <view class="box2"><text  Selection space="ensp">借用周:{{item.l11_17}} </text></view>
    <view class="box3"><text  Selection space="ensp">借用星期:{{item.l11_15}}</text></view>    
    </view>
    <view class="box4">
    <view class="box2" style="width:100%;"><text  Selection space="ensp" >借用课次:{{item.l11_18}} </text></view>
    </view>
    <view class="box4">
    <view class="box3"><text  Selection space="ensp">借用时间段:{{item.l11_12}}</text></view>    
        </view>
        <view class="box4">
        <view class="box2" style="width:100%;"><text  Selection space="ensp">备注:{{item.l11_8}} </text></view>

</view>
</view>
    </view>
    
    
    
</template>

<script>


    export default {
        
        data(){
        
        return{
        a2:[],
        a3: {id1:'2',id2:'addoil'},
          page:1,
postData:[],
        }

        },
         
methods:{ // methods包裹函数

//点击事件
jyjsbj(e){
     uni.navigateTo({
         url: '/pages/jsjy_1/index?id='+e
     });
},

      getData(){
          
                    //开始请求服务器数据开始
                                uni.request({
                                    url:this.$baseUrl,
                                    data: {
                                        id1:'2',
                                        id2:'addoil',
                                        page:this.page,
                                        },
                    method: 'post',
                                        header: {
                                               'content-type': 'application/x-www-form-urlencoded',
                                              },
                                        success: (res) => {
                                            
        this.a2=[...this.a2,...res.data],
    
        console.log(this.a2)
                    
                                        }
                                })
                                
                                //开始请求服务器数据结束
                },
// 触底的事件
onReachBottom() {
    console.log('到底了')
    
    if (this.page<11) {  //只允许查询10页数据

    this.page ++  // 让页码值自增 +1

 this.getData() //调用加载数据方法
}
else
{
uni.showModal({
content: '目前只允许查询10页数据!' ,
showCancel: false
        })
}

  //this.queryObj.pagenum += 1

},
// 监听页面加载
        onShow: function() {
    this.request({ url:'http://localhost/app/1.asp',method: 'POST', data: this.a3}).then(res => {console.log(res)})
                
        }
    }
    
</script>

<style>

@import url('/style/style1.css');

</style>


出现下面的报错信息

vendor.js?t=wechat&s=1675290873893&v=0370c81b8eff0377ed9406ead7b2d02a:3963 [Vue warn]: Error in onShow hook: "TypeError: this.request is not a function"


TypeError: this.request is not a function
  • 写回答

3条回答 默认 最新

  • 简效 2023-02-02 11:33
    关注

    因为你不是vue3的,你把引入写到了vue3环境下执行的位置,你应该把 import {request} from "./components/Function.js";
    Vue.prototype.request=request 这两句 拿到// #ifdef VUE3 和 // #endif 不包裹的位置 就可以了,望采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月10日
  • 已采纳回答 2月2日
  • 修改了问题 2月2日
  • 创建了问题 2月2日

悬赏问题

  • ¥15 soildworks装配体的尺寸问题
  • ¥100 有偿寻云闪付SDK转URL技术
  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑