Stack Overflow 社区您好,
我面临无服务器框架和无服务器离线插件的问题,尽管配置正确,但仍收到“找不到路由”错误。我尝试了各种故障排除步骤,但未能解决问题。我正在寻求帮助以确定可能导致此问题的原因。
我正在使用无服务器框架和 AWS Lambda 开发无服务器应用程序。我正在使用 serverless-offline 插件进行本地开发和测试。
我在 serverless.yml 配置中使用 GET 方法定义了一个端点 /dev/login,并且我尝试使用
http://localhost:3000/dev/login
访问它。但是,我一直遇到“找不到路线”错误。
尽管做出了这些努力,问题仍然存在,并且我无法访问端点 这是我的 serverless.yml 代码。
service: lambda-invoke
plugins:
- serverless-offline
provider:
name: aws
runtime: nodejs14.x
stage: dev
region: us-east-1
functions:
login:
handler: login.handler
events:
- http:
path: /dev/login
method: get
cors: true
这是我的handler.js(登录功能代码)
const AWS = require('aws-sdk');
const jwt = require('jsonwebtoken');
const crypto = require('crypto');
const dynamoDB = new AWS.DynamoDB.DocumentClient();
const SECRET_KEY = 'your-secret-key'; // Replace with your JWT secret key
const TABLE_NAME = 'CryptoPortfolioTracker-user-harisalimughal'; // Replace with your DynamoDB table name
module.exports.login = async (event) => {
try {
const requestData = JSON.parse(event.body);
const username = requestData.username;
const password = requestData.password;
// Retrieve user data from DynamoDB
const params = {
TableName: TABLE_NAME,
Key: { username },
};
const userData = await dynamoDB.get(params).promise();
if (!userData.Item) {
return {
statusCode: 401,
body: JSON.stringify({ message: 'Invalid credentials' }),
};
}
// Hash and compare passwords
const hashedPassword = crypto.createHash('sha256').update(password).digest('hex');
if (hashedPassword !== userData.Item.password) {
return {
statusCode: 401,
body: JSON.stringify({ message: 'Invalid credentials' }),
};
}
// Generate JWT
const tokenPayload = { username: userData.Item.username };
const token = jwt.sign(tokenPayload, SECRET_KEY, { algorithm: 'HS256' });
return {
statusCode: 200,
body: JSON.stringify({ token }),
};
} catch (error) {
console.error('Error:', error);
return {
statusCode: 500,
body: JSON.stringify({ message: 'Internal server error' }),
};
}
};
.
路径:/登录
dev
(舞台)已为您添加。只需将其从您的路径中删除即可