项目结构:

我的项目结构是:前后端分离。
前端node + express + nuxt 后端 beego
来自浏览器的请求都经过node, node使用http-proxy-middleware代理所有请求参数为/api的请求。

当使用asyncData方法在组件渲染前异步请求数据时,node url parse 去解析你的这个 /api 参数的,然后再传给相应的如 http request所以默认就是80端口 ( http://cnodejs.org/topic/58944c40fa1fd87f05922d99 )(前一句话是原因,不是完全明白,在链接网页的文章的评论有。)

报错位置如下:

 export default {
  asyncData () {
    return axios.get(`/api/users`)
    .then((res) => {
      return { title: res.data.title }

配置代理如下:

// 转发api接口请求 将/api前缀的请求转发到http://127.0.0.1:8080
app.use(proxy('/api', { target: 'http://127.0.0.1:8080', changeOrigin: true }));

当前node服务器网址:127.0.0.1:3000, 接口服务器地址:127.0.0.1:8080

asyncData方法异步请求数据时,以为/api/${params.id}这个接口的网址是 127.0.0.1:80, 所以将请求发送给了127.0.0.1:80,而我的接口服务器并没有跑在80端口上,所以报错。

报错全文(url被我替换了,不过不影响理解):

{ Error: connect ECONNREFUSED 127.0.0.1:80
    at Object.exports._errnoException (util.js:1020:11)
    at exports._exceptionWithHostPort (util.js:1043:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1090:14)
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED',
  syscall: 'connect',
  address: '127.0.0.1',
  port: 80,
  config: 
   { adapter: [Function: httpAdapter],
     transformRequest: { '0': [Function: transformRequest] },
     transformResponse: { '0': [Function: transformResponse] },
     timeout: 0,
     xsrfCookieName: 'XSRF-TOKEN',
     xsrfHeaderName: 'X-XSRF-TOKEN',
     maxContentLength: -1,
     validateStatus: [Function: validateStatus],
     headers: 
      { Accept: 'application/json, text/plain, */*',
        'User-Agent': 'axios/0.16.2' },
     method: 'get',
     params: { page: 1, size: 10 },
     url: '/api/users',
     data: undefined },
  request: 
   Writable {
     _writableState: 
      WritableState {
        objectMode: false,
        highWaterMark: 16384,
        needDrain: false,
        ending: false,
        ended: false,
        finished: false,
        decodeStrings: true,
        defaultEncoding: 'utf8',
        length: 0,
        writing: false,
        corked: 0,
        sync: true,
        bufferProcessing: false,
        onwrite: [Function],
        writecb: null,
        writelen: 0,
        bufferedRequest: null,
        lastBufferedRequest: null,
        pendingcb: 0,
        prefinished: false,
        errorEmitted: false,
        bufferedRequestCount: 0,
        corkedRequestsFree: [Object] },
     writable: true,
     domain: null,
     _events: 
      { response: [Function: handleResponse],
        error: [Function: handleRequestError] },
     _eventsCount: 2,
     _maxListeners: undefined,
     _options: 
      { maxRedirects: 21,
        protocol: 'http:',
        hostname: null,
        port: null,
        path: '/api/users',
        method: 'get',
        headers: [Object],
        agent: undefined,
        auth: undefined,
        pathname: '/api/users',
        search: '?page=1&size=10' },
     _redirectCount: 0,
     _bufferedWrites: [],
     _onNativeResponse: [Function],
     _currentRequest: 
      ClientRequest {
        domain: null,
        _events: [Object],
        _eventsCount: 5,
        _maxListeners: undefined,
        output: [],
        outputEncodings: [],
        outputCallbacks: [],
        outputSize: 0,
        writable: true,
        _last: true,
        upgrading: false,
        chunkedEncoding: false,
        shouldKeepAlive: false,
        useChunkedEncodingByDefault: false,
        sendDate: false,
        _removedHeader: {},
        _contentLength: 0,
        _hasBody: true,
        _trailer: '',
        finished: true,
        _headerSent: true,
        socket: [Object],
        connection: [Object],
        _header: 'GET /api/users HTTP/1.1\r\nAccept: application/json, text/plain, */*\r\nUser-Agent: axios/0.16.2\r\nHost: localhost\r\nConnection: close\r\n\r\n',
        _headers: [Object],
        _headerNames: [Object],
        _onPendingData: null,
        agent: [Object],
        socketPath: undefined,
        timeout: undefined,
        method: 'GET',
        path: '/api/users',
        _ended: false,
        _redirectable: [Circular],
        parser: null },
     _currentUrl: 'http:/api/users' },
  response: undefined }

1. 将node服务器端口改成 127.0.0.1:80
2. 将接口服务器端口改成 127.0.0.1:80
3. 将asyncData方法使用的请求url加上域名+端口,如下所示

 export default {
  asyncData ({ params }) {
    return axios.get(`https://127.0.0.1:3000/api/${params.id}`)
    .then((res) => {
      return { title: res.data.title }
                    错误原因项目结构:我的项目结构是:前后端分离。 前端node + express + nuxt   后端 beego 来自浏览器的请求都经过node, node使用http-proxy-middleware代理所有请求参数为/api的请求。当使用asyncData方法在组件渲染前异步请求数据时,node url parse 去解析你的这个 /api 参数的,然后再传给相应的如  http req
				
技术宅 Error JavaScript MySQL Node.js 木有吐槽 最近用 Node 写一个小玩意,需要用到 MySQL 数据库,现在用得最广泛的是 mysql 这个库。然后呢,现在 ORM 这么火,干脆也上 ORM 吧,正好我也不会可以学习一下,于是找到了 Sequelize.js 这个 ORM 库。 看看 Sequelize 的文档,so easy,两分钟搞定~ import Sequelize from 'sequelize'; let sequelize = new Sequelize(
Error: connect ECONNREFUSED 127.0.0.1:3306 今天做koa连接数据库配置时,出现 Error: connect ECONNREFUSED 127.0.0.1:3306 Error: connect ECONNREFUSED 127.0.0.1:3306 at TCPConnectWrap.afterConnect [as oncomple...
Nuxt.js 生成静态报错 Error: connect ECONNREFUSED 127.0.0.1:9001 at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) 多半是因为你的异步请求数据地址访问无效, 检查:你调用数据接口的URL地址,是否可以正常访问 我是在使用 nuxt 的 asyncData 方法遇到了这个问题。 最后解决办法是补全访问 url 其实我们在配置axios的时候已经配置过了前缀,但是不知道为什么在这里不行,所以需要写全url 报错的写法 解决方法一:补全路径 解决方法二:拦截器里面配置前缀 import { message } from 'ant-design-vue/lib' export defa...
背景:最近负责一个公司的开源项目,由于要求代码覆盖率达到95%,而接受项目的时候是96%,意味之我有1%的空间。。。 问题描述: 1.在写了一些单元测试的时候,发现在跑test命令的时候出现了下图的错误 console.error node_modules/@testing-library/react/dist/act-compat.js:52 Error: Error: connect ECONNREFUSED 127.0.0.1:80 at Object.dispatch
练习Vue项目的时候,想让项目跑起来一开始输入node .\app.js 数据库连接报错: Error: ER_ACCESS DENIED ERROR: Access denied for user ‘root’@‘localhost’ (using password: YES) 没有发现,这个错误,然后在POSTMAN里面测试接口文档又报错: post Error: connect ECONNREFUSED 127.0.0.1:8888 一直找原因,才发现是数据库没连上,密码错误了,你可以在你的项目文件夹
启动服务器失败,报错信息如下: Error: connect ECONNREFUSED 127.0.0.1:3306 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1157:16) -------------------- 解决方案: 1.打开后台数据库命名文件夹 config 找到数据库命名项 2.更改database项中命名. 3.重启控制器,重新连接数据库,...
  这个报错也是一直困扰了我许久,服务端一直打印这个报错,但是页面数据响应又都正常,起初真不知道是因为什么原因,能看出来他是在调用80端口, 但是不明白为什么会调用80端口。一度以为是config.js里面配置问题,所以解决的思路就一直在考虑配置方面,端口等方面。   最后发现都没有效果,在网上也查了各种类似的报错问题,解决方案也都不在点子上。考虑到我的config配置都是按官方模板配...
https://github.com/alibaba/anyproxy/issues/415 其实这访问的是代理http://127.0.0.1:8001/,而不是web地址:http://127.0.0.1:8001/。一定得仔细看CLI提示,端口号要对。 Error: connect ECONNREFUSED at errnoException (net.js:770:11) at Object.afterConnect [as oncomplete] (net.js:761:19) 最后在stackoverflow找到解决方案,这主要由于上一次node.js server进程仍然还在运行没关闭掉,所以我们需要杀掉此进程
Error: connect ECONNREFUSED 127.0.0.1:8084 今天遇到一个很奇葩的问题,花了两个小时才找出来,内心是崩溃的,直接社死,接下来我说一下我的解决过程… 我看百度上让我这样解决 然而这样试还是没有用 继续 postman 一直拒绝连接 项目启动成功了,但是没有端口号 就很奇怪 此处省略一万字 ,最后受到一个同事的启发 会不会是jar包的问题 意外发现 导入web的包 解决问题 <dependency> <groupId>
问题:nuxt正常点击跳转没问题。但是刷新页面会出现接口错误。asyncData 没有使用async asyncData方法去请求后台地址刷新页面就没问题,如果使用了该方法去请求后台刷新页面就报上面的异常。 排查一:然后我就打印下error,发现是出现错误Error: connect ECONNREFUSED 127.0.0.1:80 at TCPConnectWrap.afterConnect [此时运行的访问链接还是http://localhost:3000/] 然后我排查二:搜索Erro.
e8love: [code=csharp] May 22 08:58:35 debian kubelet[528]: E0522 08:58:35.944454 528 kubelet.go:2344] "Container runtime network not ready" networkReady="NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized" [/code] 标记还不知道怎么解决 继续找答案 【实现简单的容器】- docker基础技术之namespace NetRookieX: centos7 内核3.10 【实现简单的容器】- docker基础技术之namespace NetRookieX: 为什么我一用user namespace就报错?fork/exec /usr/bin/sh: invalid argument 【golang】make & new NayelyAA: [code=plain] package main import ( "fmt" type User struct { Name string Map map[string]int func main() { u := new(User) u.Name = "wss" // 字符串初始化了 u.Map["wss"] = 24 // new不会初始化结构体里的map panic nil fmt.Println(u) [/code] 换成make也是会panic的吧,感觉作为不推荐使用new的理由好像不太站得住...