0

この問題を特定するのを手伝ってください。ボタンをクリックしてリモート データを読み込もうとしましたが、エラーが発生しました。

キャッチされないエラー: モジュール 'http' が見つかりません...

tiny-json-httpaxiosを使用していくつかのテストを作成しました。「vue-cli-error-http」プロジェクト フォルダーを作成した後の私の手順:

$ npm install -g vue-cli   

$ cd vue-cli-error-http   
$ vue init webpack .   
$ npm install axios --save
$ npm install tiny-json-http --save

$ npm run dev

src/components/に新しいコンポーネントLoaderTiny.vueを作成しました:

<template>
  <div class="hello">
    <h1>{{msg}} </h1>
    <hr />
    <button v-on:click="getData">Get Data</button>

  <ul v-if="posts && posts.length">
    <li v-for="(post, index) in posts" :key="`p-${index}`">
      <p><strong>{{post.title}}</strong></p>
      <p>{{post.body}}</p>
    </li>
  </ul>

  <ul v-if="errors && errors.length">
    <li v-for="(error, index) in errors" :key="`error-${index}`">
      {{error.message}}
    </li>
  </ul>
</div>

</template>

<script>
import tiny from "tiny-json-http";
import axios from 'axios';

export default {
  name: "LoaderTiny",
  data() {
    return {
      msg: "Welcome to Your Vue.js App",
      posts: [],
      errors: []
    };
  },
  methods: {
    getData: function(event) {
      const reqURL = `http://jsonplaceholder.typicode.com/posts`;

      /*
      this.posts = [
        {
          userId: 1,
          id: 1,
          title:
            "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
          body:
            "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
        },
        {
          userId: 1,
          id: 2,
          title: "qui est esse",
          body:
        "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
        }
      ];
      */

      /*
      tiny.get( {reqURL} ).then(response => {
        // JSON responses are automatically parsed.
        console.log(response);
        this.posts = response.body.Items;
      }).catch(err =>  this.errors.push(err))
      */
      try {
        axios.get(reqURL)
          .then(response => {
            // JSON responses are automatically parsed.
            this.posts = response.data;
          })
          .catch(e =>  this.errors.push(e));
      } catch (err) {
        console.log(err);
      }
    }
  }
};
</script>

ルーター ( src/router/index.js ) では:

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import LoaderTiny from '@/components/LoaderTiny'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/test',
      component: LoaderTiny
    },
    {
      path: '/',
      component: HelloWorld
    },
  ]
})
4

0 に答える 0