javascript TypeError:Webpack导入的模块不是函数

ovfsdjhp  于 2023-05-05  发布在  Java
关注(0)|答案(4)|浏览(189)

我有一个计算工作班次的后端。我试图张贴一些所需的用户输入与服务/班次的模块。getAll方法工作正常,但提交会抛出错误
TypeError:services_shifts__WEBPACK_IMPORTED_MODULE_2_.default.postData不是函数
Shiftservice模块:

import axios from 'axios'
const baseUrl = '...'

const getAll = () => {
    const request = axios.get(baseUrl)
    return request.then(response => response.data)
}
const postData = newObject => {
    const request = axios.post(baseUrl, newObject)
    return request.then(response => response.data)
}

export default {getAll, postData}

我有一个按钮,单击时触发以下调用代码:

import shiftService from './services/shifts'

  const postData = (event) => {
    event.preventDefault()
    const sampleObject = {
      sampleField: sample
    }
    shiftService
      .postData(sampleObject)
      .then(returnedData => {
        console.log(returnedData)
      })
}

当执行到达shiftService.postData时,将抛出错误。
我真的很困惑,因为我基本上是复制一些旧的项目,我的作品,但在这里,我只是没有找到问题。提前感谢您对新人的帮助!

arknldoa

arknldoa1#

模块提供了特殊的导出默认值***(“默认导出”)语法,以使“每个模块一件事”***的方式看起来更好。每个文件可能只有一个导出默认值。在下面的示例中,我们可以忽略类名。

//Module1
export default class{
}

然后不带任何名称的花括号导入它:

//Module2
import anyname from './Module1'

您的方案有两个函数是不同的。您可以导出默认的一个函数

export default getAll

以及正常导出其他功能。

export postData

在导入时

import{ default as getAll,postData} from './yourModule'

在Shiftservice模块中删除default并正常导出:

import axios from 'axios'
const baseUrl = '...'

const getAll = () => {
    const request = axios.get(baseUrl)
    return request.then(response => response.data)
}
const postData = newObject => {
    const request = axios.post(baseUrl, newObject)
    return request.then(response => response.data)
}

export {getAll, postData}

导入您的模块

import {getAll,PostData} from './Module1'

import * as shiftService from './Module1'

然后使用shiftServer.postData() .....

jyztefdp

jyztefdp2#

好吧,我对这个解决方案感到尴尬。我只是从一个错误的文件夹中编辑了一个早期版本的shiftService,而导入的服务中只有get方法。
所以我的代码实际上工作,如果放置正确。感谢您的时间,并感谢分享替代方法,必须工作以及。

s6fujrry

s6fujrry3#

我认为这是因为你将函数声明为箭头函数并以这种方式导出:
export default {getAll, postData}
你需要将它们声明为普通函数

function postData(){
}

应该可以

dxxyhpgq

dxxyhpgq4#

有点尴尬,但在我的情况下,问题是由于重构,我在同一个目录中同时拥有module.jsmodule.ts

相关问题