Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 离子型5-Can';t显示来自API的数据_Android_Angular_Ionic Framework_Ionic5 - Fatal编程技术网

Android 离子型5-Can';t显示来自API的数据

Android 离子型5-Can';t显示来自API的数据,android,angular,ionic-framework,ionic5,Android,Angular,Ionic Framework,Ionic5,注意:这里的爱奥尼亚新手总数 我有以下资料: 离子5(电容器)应用程序,角度11 Express后端(本地主机:3000) 我可以从API调用获取数据并在浏览器中显示,但不能在模拟的Android设备上显示。我不知道如何在Android Studio中检查控制台错误 这张图片可以更好地解释这种情况 我想这是因为CORS。我试着在这个问题上遵循规则,但没有解决方案 这是我的快递代码: const express = require("express"); const co

注意:这里的爱奥尼亚新手总数

我有以下资料:

  • 离子5(电容器)应用程序,角度11
  • Express后端(本地主机:3000)
我可以从API调用获取数据并在浏览器中显示,但不能在模拟的Android设备上显示。我不知道如何在Android Studio中检查控制台错误

这张图片可以更好地解释这种情况

我想这是因为CORS。我试着在这个问题上遵循规则,但没有解决方案

这是我的快递代码:

const express = require("express");
const cors = require("cors");
const app = express();
const port = 3000;

const allowedOrigins = [
  "capacitor://localhost",
  "ionic://localhost",
  "http://localhost",
  "http://localhost:8080",
  "http://localhost:8100",
  "http://192.168.2.25:8100",
];

// For parsing JSON in request body
app.use(express.json());

// MySQL connection details - for POC sake.
// In PROD, these are typically saved in .env variables
// Ref: https://www.linkedin.com/pulse/storing-database-credentials-securely-siddhesh-jog
var mysql = require("mysql");
var connection = mysql.createConnection({
  host: "____________________________.us-east-2.rds.amazonaws.com",
  user: "admin",
  password: "*****************",
  database: "poc",
});

const corsOptions = {
  origin: (origin, callback) => {
    if (allowedOrigins.includes(origin) || !origin) {
      callback(null, true);
    } else {
      console.log(origin);
      callback(new Error("Origin not allowed by CORS"));
    }
  },
};

// Enable preflight requests for all routes
app.options("*", cors(corsOptions));

// Connect to MySQL
connection.connect(function (err) {
  if (err) throw err;
  console.log("Connected!");
});

// Dashboard - GET
app.get("/dashboard", cors(corsOptions), (req, res) => {
  rows = [];
  connection.query(
    "select label_id, value from poc_fct",
    function (err, result) {
      if (err) throw err;
      res.json(result);
    }
  );
});

app.listen(port, () => {
  console.log(`CORS-enabled web server listening at http://localhost:${port}`);
});

任何帮助都将不胜感激。

最终对我有用的是将API端点从
http://localhost:3000/data
http://192.168.2.25:3000/data
,其中192.168.2.25是运行Express server的主机的本地IP地址

对于将来可能出现此问题的其他人,请注意以下几点:

  • 这不是CORS的问题。我注释掉了app.use(cors)
  • 这不是HTTP/HTTPS问题
  • 将模拟器的代理更改为10.0.2.2:3000无效

  • 最终对我起作用的是将API端点从
    http://localhost:3000/data
    http://192.168.2.25:3000/data
    ,其中192.168.2.25是运行Express server的主机的本地IP地址

    对于将来可能出现此问题的其他人,请注意以下几点:

  • 这不是CORS的问题。我注释掉了app.use(cors)
  • 这不是HTTP/HTTPS问题
  • 将模拟器的代理更改为10.0.2.2:3000无效

  • 打开chrome并附加调试器。zone evergreen.js:2845 GET net::ERR_CONNECTION_densed----我已经为本地API端点启用了SSL。const app=require(“https本地主机”)()。。。我将尝试硬编码到仪表板页面的完整URL。检查以下答案:@najamusaqib我的确切问题是无法从模拟Android设备访问本地Express API服务器()。我会尽快发布解决方案。打开chrome并附加调试器。zone evergreen.js:2845 GET net::ERR_CONNECTION_densed----我已经为本地API端点启用了SSL。const app=require(“https本地主机”)()。。。我将尝试硬编码到仪表板页面的完整URL。检查以下答案:@najamusaqib我的确切问题是无法从模拟Android设备访问本地Express API服务器()。我会尽快发布一个解决方案。