我正在尝试使用可选参数设置 GET 请求,但是当我在没有可选参数的情况下在本地调用 url 时出现错误。不过,它在 lambda 上在线运行良好。我做错了什么?
我将无服务器版本 1.24.1 与无服务器离线插件版本 3.16.0 一起使用
这是我在serverless.yml 中的请求定义:
functions:
getitems:
handler: lambda.handler
events:
- http:
path: item/store/{storeid}/{itemstatus}
method: get
cors: true
request:
parameters:
paths:
storeid: true
itemstatus: false
Run Code Online (Sandbox Code Playgroud)
这个网址有效:
http://localhost:3000/item/store/123456/used
Run Code Online (Sandbox Code Playgroud)
这不
http://localhost:3000/item/store/123456
Run Code Online (Sandbox Code Playgroud)
并给我这个输出
{
statusCode: 404,
error: "Serverless-offline: route not found.",
currentRoute: "get - /item/store/123456",
existingRoutes: [
"get - item/store/{storeid}/{itemstatus}"
]
}
Run Code Online (Sandbox Code Playgroud)
非常感谢
设想
我正在为本地 Lambda 输出编写单元测试。我不想手动输入所有不同 lambda 函数的名称,而是想要动态生成列表。
sls deploy list functions
Run Code Online (Sandbox Code Playgroud)
将返回部署到 aws 的函数列表,但不返回本地无服务器环境中的函数列表
问题
如何获取本地函数列表?
帮助菜单对于如何运行本地函数很有用,但对于组合本地函数列表却没有帮助。
$ sls --help
Commands
* You can run commands with "serverless" or the shortcut "sls"
* Pass "--verbose" to this command to get in-depth plugin info
* Pass "--no-color" to disable CLI colors
* Pass "--help" after any <command> for contextual help
Framework
* Documentation: https://serverless.com/framework/docs/
config ........................ Configure Serverless
config credentials ............ Configures a new provider profile for the Serverless Framework
create ........................ …Run Code Online (Sandbox Code Playgroud) aws-lambda serverless-framework serverless serverless-framework-offline
我遇到了 CORS 问题,问题是我的代码已执行(状态 200),但 Google Chrome 开发者控制台中出现错误。
我的代码:
function callUrl(url) {
var xmlhttp = null;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
if (xmlhttp !== null) {
xmlhttp.open("POST", url, true);
xmlhttp.withCredentials = true;
xmlhttp.send(JSON.stringify({
}));
} else {
console.error("Your browser does not support XMLHTTP.");
}
}
callUrl('https://www.website.com/tracking?etc...');
Run Code Online (Sandbox Code Playgroud)
XMLHttpRequest 无法加载https://www.website.com/tracking?。当请求的凭据模式为“include”时,响应中“Access-Control-Allow-Origin”标头的值不能是通配符“*”。因此,不允许访问来源“ http://localhost:8888 ”。XMLHttpRequest 发起的请求的凭据模式由 withCredentials 属性控制。
服务器配置:
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Credentials": true,
Run Code Online (Sandbox Code Playgroud) javascript xmlhttprequest cors serverless serverless-framework-offline
我正在使用无服务器框架开发一些 Lambda 函数。无服务框架已在全球安装。
我正在使用 Typescript 和 serverless-webpack。
我也在使用 serverless-offline 在本地进行测试。
一切工作正常,除非我尝试从 VSCode 中进行调试。问题是,一旦我从 VSCode 的调试工具启动无服务器离线,所有断点都会变灰。
这是我的配置文件
包.json
{
"name": "backend-serverless",
"version": "1.0.0",
"description": "serverless backend",
"main": "handler.js",
"scripts": {
"test": "mocha -r ts-node/register transform/src/**/*.spec.ts src/**/**/*.spec.ts",
"tsc": "tsc",
},
"author": "",
"license": "ISC",
"devDependencies": {
"@types/aws-lambda": "0.0.34",
"@types/chai": "^4.1.2",
"@types/mocha": "^5.0.0",
"@types/node": "^9.6.0",
"chai": "^4.1.2",
"mocha": "^5.0.5",
"serverless-offline": "^3.18.0",
"serverless-webpack": "^5.1.1",
"ts-loader": "^4.1.0",
"ts-node": "^5.0.1",
"typescript": "^2.7.2",
"webpack": "^4.3.0"
}
}
Run Code Online (Sandbox Code Playgroud)
webpack.config.ts
const path = require('path');
const slsw = …Run Code Online (Sandbox Code Playgroud) typescript webpack visual-studio-code serverless-framework serverless-framework-offline
我有两个无服务器脱机“服务器”,它们需要同时在本地运行。
因此,我需要更改其中一台服务器的端口。
我使用Visual Studio Code调试器运行服务器。服务器的配置位于launch.json文件中。
如何更改无服务器脱机应用程序的端口,以便可以使用VS Code调试器与另一个无服务器脱机应用程序并行运行?
port node.js visual-studio-code serverless serverless-framework-offline
我使用无服务器脱机开发Web项目。
我需要API密钥才能访问无服务器 AWS Lamda上的资源。
我的服务和提供者都有一个serverless.yml 。
在Postman中,我访问了我的路由(http://127.0.0.1:3333/segments/UUID/test),并且没有任何错误(如Forbidden message),Lambda已执行...
test:
handler: src/Api/segment.test
events:
- http:
path: segments/{segmentUuid}/test
method: post
request:
parameters:
paths:
segmentUuid: true
private: true
Run Code Online (Sandbox Code Playgroud)
该路由不受私有保护。
yaml aws-lambda serverless-framework serverless serverless-framework-offline
var result = [{
count : 10,
data : [{"id":11,"id":22}]
}];
var response = {
statusCode: 200,
count: result.length,
body: result
};
callback(null, response);
Run Code Online (Sandbox Code Playgroud)
控制台错误
根据 API Gateway 规范,正文内容必须是字符串化的。检查您的 Lambda 响应并确保您在 body 对象上调用 JSON.stringify(YOUR_CONTENT)
node.js aws-lambda aws-api-gateway serverless-framework serverless-framework-offline
serverless-framework-offline ×7
serverless ×4
aws-lambda ×3
node.js ×3
cors ×1
javascript ×1
port ×1
typescript ×1
webpack ×1
yaml ×1