- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用docker进行了一些复杂的设置。一切都按预期工作,除了我有这个奇怪的问题。
访问索引页面或/ pages / _id页面我没有错误。但是,当我尝试打开/ other-page时,它崩溃了。所有人都使用相同的API网址。
打开/ other-page时在控制台中发现错误:
GET http://api:1337/games net::ERR_NAME_NOT_RESOLVED
不知道该怎么办,有什么建议吗?
nuxt.config.js
axios: {
baseURL: 'http://api:1337'
},
version: '3'
services:
api:
build: .
image: strapi/strapi
environment:
- APP_NAME=strapi-app
- DATABASE_CLIENT=mongo
- DATABASE_HOST=db
- DATABASE_PORT=27017
- DATABASE_NAME=strapi
- DATABASE_USERNAME=
- DATABASE_PASSWORD=
- DATABASE_SSL=false
- DATABASE_AUTHENTICATION_DATABASE=strapi
- HOST=api
- NODE_ENV=production
ports:
- 1337:1337
volumes:
- ./strapi-app:/usr/src/api/strapi-app
#- /usr/src/api/strapi-app/node_modules
depends_on:
- db
restart: always
links:
- db
nuxt:
# build: ./app/
image: "registry.gitlab.com/username/package:latest"
container_name: nuxt
restart: always
ports:
- "3000:3000"
links:
- api:api
command:
"npm run start"
nginx:
image: nginx:1.14.2
expose:
- 80
container_name: nginx
restart: always
ports:
- "80:80"
volumes:
- ./nginx:/etc/nginx/conf.d
depends_on:
- nuxt
links:
- nuxt
...
async asyncData({ store, $axios }) {
const games = await $axios.$get('/games')
store.commit('games/emptyList')
games.forEach(game => {
store.commit('games/add', {
id: game.id || game._id,
...game
})
})
return { games }
},
...
...
async asyncData({ store, $axios }) {
const games = await $axios.$get('/games')
store.commit('games/emptyList')
games.forEach(game => {
store.commit('games/add', {
id: game.id || game._id,
...game
})
})
return { games }
},
...
upstream webserver {
ip_hash;
server nuxt:3000;
}
server {
listen 80;
access_log off;
connection_pool_size 512k;
large_client_header_buffers 4 512k;
location / {
proxy_pass http://webserver;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_max_temp_file_size 0;
}
axios: {
baseURL: '/api'
},
server: {
proxyTable: {
'/api': {
target: 'http://localhost:1337',
changeOrigin: true,
pathRewrite: {
"^/api": ""
}
}
}
}
version: '3'
services:
reverse-proxy:
image: traefik # The official Traefik docker image
command: --api --docker # Enables the web UI and tells Traefik to listen to docker
ports:
- "80:80" # The HTTP port
- "8080:8080" # The Web UI (enabled by --api)
volumes:
- /var/run/docker.sock:/var/run/docker.sock # listen to the Docker events
networks:
- mynet
api:
build: .
image: strapi/strapi
container_name: api
environment:
- APP_NAME=strapi-app
- DATABASE_CLIENT=mongo
- DATABASE_HOST=db
- DATABASE_PORT=27017
- DATABASE_NAME=strapi
- DATABASE_USERNAME=
- DATABASE_PASSWORD=
- DATABASE_SSL=false
- DATABASE_AUTHENTICATION_DATABASE=strapi
- HOST=api
- NODE_ENV=development
ports:
- 1337:1337
volumes:
- ./strapi-app:/usr/src/api/strapi-app
#- /usr/src/api/strapi-app/node_modules
depends_on:
- db
restart: always
networks:
- mynet
labels:
- "traefik.backend=api"
- "traefik.docker.network=mynet"
- "traefik.frontend.rule=Host:example.com;PathPrefixStrip:/api"
- "traefik.port=1337"
db:
image: mongo
environment:
- MONGO_INITDB_DATABASE=strapi
ports:
- 27017:27017
volumes:
- ./db:/data/db
restart: always
networks:
- mynet
nuxt:
# build: ./app/
image: "registry.gitlab.com/username/package:latest"
container_name: nuxt
restart: always
ports:
- "3000:3000"
command:
"npm run start"
networks:
- mynet
labels:
- "traefik.backend=nuxt"
- "traefik.frontend.rule=Host:example.com;PathPrefixStrip:/"
- "traefik.docker.network=web"
- "traefik.port=3000"
networks:
mynet:
external: true
最佳答案
Visiting index page or /pages/_id pages I have no errors. But when I try to open /other-page it crashes.
/
上有一个主页,该页面显示了一些针对/pages/_id
(其中_id
是有效的游戏ID)的页面的链接。/
或/pages/_id
时,内容显示为/
中的链接指向/pages/xxx
(其中xxx
是有效ID),则会收到错误http://yourserver/pages/123
asyncData
方法
http://api:1337/games/123
进行不同的调用来获取内容,接收响应并呈现内容。 http://api:1337/games/123
页面上,该页面具有指向列出所有游戏的首页的链接(http://yourserver/
),然后单击它。 http://api:1337/games
进行了ajax调用,以尝试获取新内容。并由于名称解析错误
asyncData
is called every time before loading the page component. It will be called server-side once (on the first request to the Nuxt app) and client-side when navigating to further routes.
server-side
表示从nuxt服务器到api服务器的调用client-side
表示是从用户浏览器到api服务器1337
http://api:1337/
,这可以正常工作http://api:1337
失败(net::ERR_NAME_NOT_RESOLVED
),因为用户计算机不知道如何将域名api
转换为IP地址。即使可以,此IP地址也将无法访问。 http://yourserver/api/
开头的url到端口api
上的1337
容器。 client-side
(从用户浏览器)的链接使用url http://yourserver/api
而不是http://api:1337/
http://api:1337
进行的调用调用server-side
。 server-side
)发出的 call 添加反向代理
true
。
axios: {
prefix: '/api',
proxy: true
},
proxy: {
'/api/': {
target: 'http://localhost:1337',
pathRewrite: {
'^/api/': ''
}
}
},
http://localhost:1337
进行响应。但这在容器中不起作用,因为我们需要用
http://localhost:1337
替换
http://api:1337
。
STRAPI_URL
):
axios: {
prefix: '/api',
proxy: true
},
proxy: {
'/api/': {
target: process.env.STRAPI_URL || 'http://localhost:1337',
pathRewrite: {
'^/api/': ''
}
}
},
STRAPI_URL
。
client-side
)
version: '3'
services:
reverseproxy: # see https://docs.traefik.io/#the-traefik-quickstart-using-docker
image: traefik:1.7
command: --docker
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
api:
image: strapi/strapi
environment:
- ...
expose:
- 1337
labels:
traefik.frontend.rule: PathPrefixStrip:/api
traefik.port: 1337
nuxt:
image: ...
expose:
- 3000
command:
"npm run start"
labels:
traefik.frontend.rule: PathPrefixStrip:/
traefik.port: 3000
http://yourserver
发出的所有HTTP请求都将由Traefik反向代理处理。
traefik.
和
nuxt
容器上以
api
开头的标签来配置转发规则。
server-side
请求(nuxt.js Proxy module)client-side
请求(Traefik)http://api:1337/
。为此,我们将使用
STRAPI_URL
环境变量。
http://yourserver/api
上调用api。这是通过
API_URL_BROWSER环境变量完成的。
axios: {
prefix: '/api',
proxy: true
},
proxy: {
'/api/': {
target: process.env.STRAPI_URL || 'http://localhost:1337',
pathRewrite: {
'^/api/': ''
}
}
},
version: '3'
services:
reverseproxy: # see https://docs.traefik.io/#the-traefik-quickstart-using-docker
image: traefik:1.7
command: --docker
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
api:
image: strapi/strapi
environment:
- ...
expose:
- 1337
labels:
traefik.frontend.rule: PathPrefixStrip:/api
traefik.port: 1337
nuxt:
image: ...
expose:
- 3000
command:
"npm run start"
environment:
NUXT_HOST: 0.0.0.0
STRAPI_URL: http://api:1337/
API_URL_BROWSER: /api
labels:
traefik.frontend.rule: PathPrefixStrip:/
traefik.port: 3000
关于docker - 使用asyncData为nuxt.js页面获取http://api:1337/games net::ERR_NAME_NOT_RESOLVED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55090038/
我试图在 asyncData 方法中获取路由参数,如果我手动转到路由,它会起作用,但是如果我使用路由器 Push 方法,它不会得到任何参数。 这是我的 asynData 方法: async asy
我正在使用 NuxtJS 的 AsyncData 方法从 API 获取视频文件,然后作为文件对象返回到页面。 像这样: async AsyncData({$axios}){ var user_
我为授权用户和用户 token 设置了一些 cookie。 在那之后,在每个 nuxtServerInit 上,我都会检查 cookie 中的相同数据并将它们设置在存储中。 当我在某些页面中使用 as
我通过 asyncData 获取一些数据,在显示这些项目后,网站必须滚动到一个元素。 methods: { scrollTo() { // ScrollTo Element..
我正在使用 nuxtjs,我试图弄清楚是否可以从异步数据函数访问组件方法。 例如,我想做这样的事情: methods: { parseResult(data) { // do
我正在开发一个 nuxt js/vue js 项目。在其中我必须调用多个 REST API。在页面组件中,我调用 asyncData() nuxt js API 来调用 REST api。 impor
我正在运行 Nuxt,我有以下功能。我想检查是否已通过身份验证,如果没有则重定向到登录页面。我收到错误 window is undefined 这是因为据我了解 asyncdata() 是在服务器端求
所以我正在学习如何在 Angular 中测试服务,并尝试在 Angular 文档中复制以下示例。 let httpClientSpy: { get: jasmine.Spy }; let heroSe
我的问题是 Nuxt 上 asyncData 方法的 firebase 请求。当应用程序位于客户端时,请求有效,但第一次加载不起作用。那么,在服务器上,我安装了什么吗? 这是我的代码: impor
我目前使用 asyncData 用于获取 api 数据,但它只能在页面中使用(不能在组件中使用)。 但是方法可以在页面和组件中使用。 这两种方法的工作方式相同,所以我想使用方法来获取 api 数据。所
获取数据和异步数据之间的确切区别是什么。官方文档说明如下: asyncData You may want to fetch data and render it on the server-side.
我目前正在从 firebase 加载一些数据,我不想在服务器端呈现,因此可以在页面上的 asyncData 中为 SEO 编制索引。 asyncData() { return firebase.f
我是 vue.js 的新手,我有一个简单的问题。 我有如下代码: asyncData({ params, error }) { return Job.api() .fetchB
我正在尝试将我的 VueJS 应用程序转换为 NuxtJS 以使用 SSR。我一直在尝试使用 asyncData 加载数据。当我将查询添加到 'mounted() {}' 中时功能正常,但我无法让它与
我是nuxt.js的新手,想请问有没有办法在asyncData中传递数据。这是代码。 import axios from 'axios' export default { d
Nuxt 使用 asyncData 在服务器端运行代码,然后将其与数据对象合并。 我想调用电话,要求我知道用户的 IP。 I see that I can get to the req object确
我正在尝试使用 Nuxt 构建服务器端可排序表,并且我希望能够在我的 Vue data 中指定默认排序列和方向,并在我的 asyncData 中访问它功能。像这样的东西: export defaul
nuxt: 2.4.5 @nuxtjs/axios: 5.4.1 我在 asyncData 中获取数据,它持续了 5 秒,这使得加载页面非常长,它与 axios 请求有关,当我这样做时,但是在方法 c
nuxt: 2.4.5 @nuxtjs/axios: 5.4.1 我在 asyncData 中获取数据,它持续了 5 秒,这使得加载页面非常长,它与 axios 请求有关,当我这样做时,但是在方法 c
我有一个 VUEJS SSR 设置,但不知道如何解决这个问题。 我的路线是这样的: { path: '/:blogSlug', component: BlogPost, name: 'blog-p
我是一名优秀的程序员,十分优秀!