TypeError:“原始”参数必须是 Vue.js 应用程序中的函数类型

Posted

技术标签:

【中文标题】TypeError:“原始”参数必须是 Vue.js 应用程序中的函数类型【英文标题】:TypeError: The "original" argument must be of type Function in Vue.js application 【发布时间】:2022-01-10 14:39:56 【问题描述】:

我试图在我的 Vue SPA 中使用“soap”模块调用一个肥皂网络服务,但我只是通过导入模块得到了这个错误。我已经搜索了很多,但没有找到解决方案。

我的代码:

// /src/services/soapService.js
import soap from 'soap';

var soapService = 

    users: 
        getAllUsers() 
            const url = 'http://127.0.0.2:8000/?wsdl'

            soap.createClient(url, function(err, client) 
                client.getAllUsers(function(err, result) 
                    console.log(result);
                )
            )
        
    


export default soapService;

然后我在一个 Vue 组件中调用我的函数:

<template>
  <div></div>
</template>

<script>
import soapApi from '@/services/soapService'

export default 
  name: 'Users',

  methods: 
    getAllUsers() 
      this.allUsers = soapApi.users.getAllUsers();
    
  ,

  mounted() 
    this.getAllUsers();
  


</script>

当我尝试加载 Users.vue 组件时,我收到此错误:

TypeError: The "original" argument must be of type Function
    at promisify (util.js?3022:602)
    at eval (index.js?4f62:7)
    at Object.../node_modules/get-stream/index.js (0.js:529)
    at __webpack_require__ (app.js:854)
    at fn (app.js:151)
    at eval (client.js?e3c8:24)
    at Object.../node_modules/soap/lib/client.js (0.js:586)
    at __webpack_require__ (app.js:854)
    at fn (app.js:151)
    at Object.eval (soap.js?3fc0:19)
abort @ vue-router.esm.js?8c4f:2316
eval @ vue-router.esm.js?8c4f:2369
eval @ vue-router.esm.js?8c4f:2138
eval @ vue-router.esm.js?8c4f:2203
Promise.then (async)
eval @ vue-router.esm.js?8c4f:2150
eval @ vue-router.esm.js?8c4f:2171
eval @ vue-router.esm.js?8c4f:2171
flatMapComponents @ vue-router.esm.js?8c4f:2170
eval @ vue-router.esm.js?8c4f:2106
iterator @ vue-router.esm.js?8c4f:2362
step @ vue-router.esm.js?8c4f:2004
step @ vue-router.esm.js?8c4f:2008
step @ vue-router.esm.js?8c4f:2008
step @ vue-router.esm.js?8c4f:2008
runQueue @ vue-router.esm.js?8c4f:2012
confirmTransition @ vue-router.esm.js?8c4f:2392
transitionTo @ vue-router.esm.js?8c4f:2260
push @ vue-router.esm.js?8c4f:2715
push @ vue-router.esm.js?8c4f:3037
handler @ vue-router.esm.js?8c4f:1139
invokeWithErrorHandling @ vue.runtime.esm.js?2b0e:1863
invoker @ vue.runtime.esm.js?2b0e:2188
original._wrapper @ vue.runtime.esm.js?2b0e:6961

节点 v16.11.1 npm v8.1.3 Vue v2.6.11

【问题讨论】:

您是否将肥皂类型导入到您的项目中? 【参考方案1】:

试试:

import createClient from 'soap';

【讨论】:

以上是关于TypeError:“原始”参数必须是 Vue.js 应用程序中的函数类型的主要内容,如果未能解决你的问题,请参考以下文章

TypeError('"listener" 参数必须是函数');

TypeError:函数中参数的数据位置必须是“内存”,但没有给出

LabelEncoder -- TypeError: 参数必须是字符串或数字

TypeError:错误#2007:参数文本必须为非空

TypeError:int() 参数必须是字符串或数字,而不是 'datetime.datetime'

从 web3py 发送原始交易:TypeError: <lambda>() 缺少 4 个必需的位置参数:'hash'、'r'、's' 和 'v'