小编Jer*_*eld的帖子

在 Vue 和 Express 应用程序中使用 Netlify 的 Lambda 函数时出现神秘的“A 不是函数”错误

我正在使用 Vue 构建一个 Web 应用程序,它将使用 Netlify Lambda 函数和 Express.js 作为服务器端(使应用程序成为“无服务器”)。现在 Netlify 可以实现这一点,我正在遵循他们的官方指南:如何使用 Netlify Functions 运行 Express.js 应用程序。我还使用Vue CLI 的 Netlify Lambda 插件将 lambda 函数集成到我的 Vue 构建过程中。

我有一个名为 的小型 lambda 函数server.js。当调用此函数时,它将从 Spotify API 获取数据。

'use strict'; 

const serverless = require("serverless-http");
const SpotifyWebApi = require("spotify-web-api-node");
const express = require("express");
const app = express();
const bodyParser = require("body-parser");

const router = express.Router();

router.get("/search", (req, res) => {
    // function that searches for a song with the Spotify …
Run Code Online (Sandbox Code Playgroud)

javascript express vue.js aws-lambda netlify

5
推荐指数
0
解决办法
1063
查看次数

在一个链式承诺中,为什么第二个承诺在第一个承诺之前执行?

我正在使用此授权流程来获取Spotify API的访问令牌.这组链式承诺中的第一个承诺设置access_token,除非有错误,它将错误记录到控制台.第二个承诺只是打印出最近设置的访问令牌.我认为这段代码会阻止第二个代码在.then()第一个promise被解析之后执行.

console.log("PRE ACCESS TOKEN: " + spotifyApi.getAccessToken())

spotifyApi.clientCredentialsGrant().then(
  function(data) {
    console.log("The access token expires in " + data.body["expires_in"]);
    console.log("The access token is " + data.body["access_token"]);

    // Save the access token so that it's used in future calls
    spotifyApi.setAccessToken(data.body["access_token"]);
  },

  function(err) {
    console.log(
      "Something went wrong when retrieving an access token",
      err.message
    );
  }
).then( 
    console.log("POST ACCESS TOKEN: " + spotifyApi.getAccessToken())
); 
Run Code Online (Sandbox Code Playgroud)

但我得到这个输出:

PRE ACCESS TOKEN: undefined
POST ACCESS TOKEN: undefined  
Run Code Online (Sandbox Code Playgroud)

这意味着第二个承诺在第二个承诺.then()之前执行.为什么会这样?我想我可能对Javascript中的承诺如何工作有一个基本的误解,但我不确定我究竟是什么,我不明白.

javascript node.js promise

0
推荐指数
1
解决办法
34
查看次数

标签 统计

javascript ×2

aws-lambda ×1

express ×1

netlify ×1

node.js ×1

promise ×1

vue.js ×1