部署问题(在Heroku),无法兑现承诺,但代码在本地运行良好-NodeJS / React

时间:2020-08-18 22:36:01

标签: javascript node.js api heroku deployment

我遇到了从Heroku处的服务器检索数据的问题。使用localhost时一切正常。在Heroku上部署之后,所有POST/GET请求都可以正常工作,只是其中一个Get 请求作为pending/reject出现了,但无法确切理解原因。

我觉得这可能与环境变量有关,并试图调整一些位而没有成功。我不确定我还能做什么。任何想法或指示,请。

Update-1 我终于解决了该问题,但不了解其背后的逻辑,因此基本上我首先将url从(/api/:abc)更改为(/api/x1),然后更改了请求POST并在body中而不是url中检索数据,但那时我仍然遇到相同的问题,然后我遇到一个帖子,说特殊字符可能在Heroku环境中不起作用,所以我删除了回归表达式re = /(?<=^...)(.*)/并使用了另一个比较逻辑与我的数据,现在我可以看到结果了,但是不明白为什么回归表达式会导致问题。

-Link to Heroko app,当我尝试从下拉按钮(e.g select Eco-yogaMats )中进行选择时,我正面对着error link to App

    ReactJs中的
  • FrontEnd代码段

     function tabsearch(selection) {
     let selection1 = `/#/${selection}`;
        let customerSelection = encodeURIComponent(selection1);
        console.log(customerSelection);
        let url = `/api/${customerSelection}`;
        // this request make the http request format
        let request = new Request(url);
    
        (async () => {
          let tabsearchback = await fetch(request)
            .then((res) => {
              console.log(res);
    
              console.log("70bew", res);
              let y = res.json();
              console.log(y);
              return y;
            })
            .then((data1) => {
              setHomepage(data1);
            })
            .catch((err) =>{
console.log(err) // here the error shows: SyntaxError: Unexpected token < in JSON at position 0
 setHomepage(undefined))}; //  
    
          setShowPage(1);
        })();
      }

    服务器代码的
  • Backend代码段

  

      app.get("/api/:abc", (req, res) => {
              console.log("NEwwwww");// this is not showing up either when i heroku logs --tailuse , it may indicate if it is not hitting the API here either
          const decoded = { key1: req.params.abc };
          let re = /(?<=^...)(.*)/;
        let decoded_refine = decoded.key1.match(re);
        connection.query(
            "SELECT product_name,producNumber,price,productDescription,image_URL,stockQuantity FROM main_Products_sub_category  INNER JOIN main_Product_Info INNER JOIN images ON main_Products_sub_category.main_Products_sub_category_id= main_Product_Info.main_Products_sub_category_main_Products_sub_category_id AND main_Product_Info.producInfoId=images.main_Product_Info_producInfoId WHERE main_Products_sub_category.main_Products_sub_category_name= ?",
            [decoded_refine[0]],
            function (err, results) {
         if (err) {
                let new1 = new Error("Doesnt exist");
                res.send(new1);
              } else {
                let results1 = JSON.stringify(results);
                 res.send(results1);
          }
            }
          );
        });

  • Log at server side,使用命令 heroku logs --tail
    2020-08-18T22:26:32.038933+00:00 heroku[router]: at=info method=GET path="/api/%2F%23%2FEco-YogaMats" host=yogaoutlet.herokuapp.com request_id=53a6a549-2cf5-4130-86ea-cf46f1ed9e67 fwd="94.173.211.223" dyno=web.1 connect=0ms service=8ms status=200 bytes=3670 protocol=https

  • Crome console显示承诺被拒绝

ment

-{Home display reduce在这里用作对从DB提取的产品进行初始四次验证的一部分。

function Home({ props, addBasketitems }) {
 let initialQuantities = props.reduce((quantities, product) => ({ ...quantities, [product.product_name]: 0 }), {});

0 个答案:

没有答案