質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Q&A

解決済

1回答

2595閲覧

nuxtで、ルートURL直打ちの場合のみnuxt server errorECONNREFUSEDになるのは何故か

msickpaler

総合スコア14

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

0グッド

0クリップ

投稿2020/04/18 09:25

編集2020/04/20 05:17

お世話になっております。
nuxtをフロントエンド、railsAPIをバックエンドにアプリケーションを作成しております。そこで、http://localhost:3000へ接続しようとすると下記のエラーが発生しました。

前提・実現したいこと

URLを直接入力して、http://localhost:3000へ接続しようとすると下記のエラーが発生しました。

発生している問題・エラーメッセージ

ERROR connect ECONNREFUSED 127.0.0.1:80 17:43:38 at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16)

ブラウザでは
NuxtServerError connect ECONNREFUSED 127.0.0.1:80
と表示されています。

該当のソースコード

#####index.vue

vue

1<template> 2 <div class="container"> 3 <h2>Users</h2> 4 <ul class="users"> 5 <li v-for="user in users" :key="user.id"> 6 <NuxtLink :to="'/users/' + user.id"> 7 {{ user.name }} 8 </NuxtLink> 9 </li> 10 </ul> 11 </div> 12</template> 13 14<script> 15import axios from 'axios' 16 17export default { 18 async asyncData() { 19 const { data } = await axios.get('/api/users') 20 return { users: data } 21 } 22} 23</script>

#####default.vue

vue

1<template> 2 <div> 3 <NuxtLink to="/"> 4 List of users 5 </NuxtLink> 6 <NuxtLink to="/signup"> 7 sign up 8 </NuxtLink> 9 <nuxt /> 10 </div> 11</template>

#####nuxt.config.js

js

1// const config = 2export default { 3 mode: 'universal', 4 /* 5 ** Headers of the page 6 */ 7 head: { 8 title: process.env.npm_package_name || '', 9 meta: [ 10 { charset: 'utf-8' }, 11 { name: 'viewport', content: 'width=device-width, initial-scale=1' }, 12 { 13 hid: 'description', 14 name: 'description', 15 content: process.env.npm_package_description || '' 16 } 17 ], 18 link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }] 19 }, 20 /* 21 ** Customize the progress-bar color 22 */ 23 loading: { color: '#fff' }, 24 /* 25 ** Global CSS 26 */ 27 css: [], 28 /* 29 ** Plugins to load before mounting the App 30 */ 31 plugins: [], 32 /* 33 ** Nuxt.js dev-modules 34 */ 35 buildModules: [ 36 // Doc: https://github.com/nuxt-community/eslint-module 37 '@nuxtjs/eslint-module' 38 ], 39 /* 40 ** Nuxt.js modules 41 */ 42 modules: [ 43 // Doc: https://axios.nuxtjs.org/usage 44 '@nuxtjs/axios', 45 '@nuxtjs/proxy', 46 'bootstrap-vue/nuxt' 47 ], 48 /* 49 ** Axios module configuration 50 ** See https://axios.nuxtjs.org/options 51 */ 52 axios: { 53 proxy: true 54 }, 55 proxy: { 56 '/api': 'http://localhost:3001' 57 }, 58 /* 59 ** Build configuration 60 */ 61 build: { 62 /* 63 ** You can extend webpack config here 64 */ 65 extend(config, ctx) {} 66 } 67} 68
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 89f1ef228897 sweet_app_back "docker-entrypoint.s…" 4 hours ago Up 4 hours 0.0.0.0:3001->3001/tcp sweet_app_back_run_527c8ee9fb9b 2e224b813f1a mariadb:10.5.1 "docker-entrypoint.s…" 19 hours ago Up 4 hours 0.0.0.0:32889->3306/tcp sweet_app_db_1

試したこと

下記の方法ではエラーが発生せず、ルートページが表示されました。

  1. http://localhost:3000/signupと打ち、signup.vueへ接続する
  2. そのまま、default.vueに記載してあるrootへのリンクからhttp://localhost:3000へ接続

docker-compose upでも、ホスト側でyarn devしても同じエラーが発生しました。

補足情報(FW/ツールのバージョンなど)

80番ポートは全く使用しておりません。

ブラウザではNuxtServerErrorと書かれていること、80番ポートが関係していることから間違いなくnuxtserverが関係しているだろうと思っていますが、解決には至っておりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

index.vueのasyncDataの書き方が問題だったようで、以下で解決しました。

  • asyncDataの()内にcontextを追加
  • axios.getをcontext.$axios.$getに変更
export default { async asyncData() { const { data } = await axios.get('/api/users') return { users: data } } }
export default { async asyncData(context) { const data = await context.$axios.$get('/api/users') return { users: data } } }

投稿2020/04/22 15:16

msickpaler

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問