首页 > 解决方案 > 将数据从 NPM 模块传递到应用程序

问题描述

菜鸟问题来了,所以我提前道歉。我正在尝试开发我的第一个 NPM 包,它意味着一些简单的函数,当被调用时,它们会将响应数据传递给应用程序。

我一直在使用npm link将包链接到 vuejs 应用程序,它似乎正在部分工作。当我getPublicData()在该部分中调用该函数时,mounted()它似乎可以工作。函数中的console.log(response.data)部分确实有效并在浏览器控制台中显示数据,但我也试图将响应数据分配给应用程序端的数组,这是我遇到问题的部分。

我确定我错过了一些基本的东西,但是由于我过去使用过的 NPM 包的所有复杂性,肯定有一种方法可以将此响应数据传递给应用程序吗?

我的代码:

Index.js(NPM 模块)

var axios = require("axios") 
module.exports = {  

getPublicData (req, res) {
    axios.get(`http://192.168.0.17:5000/test`)
    .then((response) => {
      console.log(response.data)
      res.send(response.data)
    })
    .catch((error) => {
      console.log("error");
    });
   }

}

你好世界.vue

<script>
import dtapp from "dtapp-api" //Linked NPM module

export default {
data () {
    return {
      myData: [],
    }
}, 
methods: {

  },
  mounted() {
   this.myData = dtapp.getPublicData();
  },
}
</script>

标签: javascriptnpmnode-modules

解决方案


您的getPublicData函数需要返回数据,以便您的应用程序可以使用它。目前它不返回任何东西。

您可以这样做:

getPublicData () {
    return axios.get(`http://192.168.0.17:5000/test`)
    .then((response) => {
      console.log(response.data)
      return response.data
    })
}

这将返回一个承诺,因此在应用程序中您可以执行以下操作:

mounted() {
   dtapp.getPublicData()
  .then(data => this.myData = data)
  .catch(err => console.log("Error occurred:", err))
} 

推荐阅读