Import in node js file for aws lambda function is not working when I deployed it with serverless
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 25/100
- Tipo di issue
- Bug
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- aws, javascript, node.js
Direzione di ricerca
Inizia confrontando app.js, app_home.js, serverless.yml e package.json, quindi distribuisci la versione con l’import e controlla i log di AWS Lambda per individuare l’errore. L’issue non include app_home.js né un messaggio di errore, quindi conferma l’import che fallisce e il comportamento del deployment prima di apportare una modifica; il lavoro è completato quando l’endpoint POST di Slack funziona con i file separati.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Hi,
So I was trying to build a slack app and deploy it to aws. I built the app and it works fine but when I try and create other js files to import them in my main, the aws post url doesn't work.
The structure of my project(app) is:
Slack-app:
-------------- app.js
-------------- app_home.js
-------------- package.json
-------------- package-lock.json
-------------- serverless.yml
..... The others are node_modules, .serverless etc.
So basically, without the import of app_home.js, the code works when deployed to aws lambda. On the slack app, it sends a message back when you type in hello. But when I add an import, the whole thing, doesn't work.
This works:
"use strict";
const { App, AwsLambdaReceiver, WorkflowStep } = require('@slack/bolt');
// Initialize your custom receiver
const awsLambdaReceiver = new AwsLambdaReceiver({
signingSecret: process.env.SLACK_SIGNING_SECRET,
});
// Initializes your app with your bot token and the AWS Lambda ready receiver
const app = new App({
token: process.env.SLACK_BOT_TOKEN,
receiver: awsLambdaReceiver,
// The `processBeforeResponse` option is required for all FaaS environments.
// It allows Bolt methods (e.g. `app.message`) to handle a Slack request
// before the Bolt framework responds to the request (e.g. `ack()`). This is
// important because FaaS immediately terminate handlers after the response.
processBeforeResponse: true
});
// Listens to incoming messages that contain "hello"
app.message('hello', async ({ message, say }) => {
// say() sends a message to the channel where the event was triggered
await say({
text: `Hey there <@${message.user}>! \n Have any questions or concerns, Please contact the IT team.`
});
});
// Handle the Lambda function event
module.exports.handler = async (event, context, callback) => {
const handler = await awsLambdaReceiver.start();
return handler(event, context, callback);
}
Where as, this doesn't work at all:
"use strict";
const { App, AwsLambdaReceiver, WorkflowStep } = require('@slack/bolt');
// THIS IS THE LINE THAT I CHANGED FROM THE PREVIOUS CODE
const app_home = require('./app_home')
// Initialize your custom receiver
const awsLambdaReceiver = new AwsLambdaReceiver({
signingSecret: process.env.SLACK_SIGNING_SECRET,
});
// Initializes your app with your bot token and the AWS Lambda ready receiver
const app = new App({
token: process.env.SLACK_BOT_TOKEN,
receiver: awsLambdaReceiver,
// The `processBeforeResponse` option is required for all FaaS environments.
// It allows Bolt methods (e.g. `app.message`) to handle a Slack request
// before the Bolt framework responds to the request (e.g. `ack()`). This is
// important because FaaS immediately terminate handlers after the response.
processBeforeResponse: true
});
// Listens to incoming messages that contain "hello"
app.message('hello', async ({ message, say }) => {
// say() sends a message to the channel where the event was triggered
await say({
text: `Hey there <@${message.user}>! \n Have any questions or concerns, Please contact the IT team.`
});
});
// Handle the Lambda function event
module.exports.handler = async (event, context, callback) => {
const handler = await awsLambdaReceiver.start();
return handler(event, context, callback);
}
So, I was just working, if it is a deployment issue?
My code for serverless is:
service: slack-app-bolt-js-forto
frameworkVersion: '2'
provider:
name: aws
runtime: nodejs12.x
lambdaHashingVersion: 20201221
profile: default
timeout: 5
stage: ${opt:stage, 'dev'}
memorySize: 512
environment:
SLACK_SIGNING_SECRET: ${env:SLACK_SIGNING_SECRET}
SLACK_BOT_TOKEN: ${env:SLACK_BOT_TOKEN}
functions:
slack:
handler: app.handler
memorySize: 1536
timeout: 30
events:
- http:
path: slack/events
method: post
plugins:
- serverless-offline
package.json looks like this
{
"name": "bolt-js-getting-started-app",
"version": "2.0.0",
"description": "Getting Started ⚡️ Bolt for JavaScript",
"main": "app.js",
"scripts": {
"ngrok": "ngrok http 3000",
"start": "node app.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"license": "MIT",
"dependencies": {
"@slack/bolt": "^3.6.0",
"axios": "^0.21.4"
},
"devDependencies": {
"serverless": "^2.59.0",
"serverless-offline": "^8.2.0"
}
}
- Lingua principale
- JavaScript
- Stelle
- 11.5k
- Fork
- 4.4k
- Merge medio
- 2h 55m
- PR unite (30g)
- 3
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di serverless/examples
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 62/100
serverless/examples#404 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
serverless/examples#809 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 30/100
serverless/examples#793 · 1 commento ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 20/100
serverless/examples#784 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
serverless/examples#782 ·
Tutte le issue di serverless/examples
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
mksglu/context-mode#1200 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
neondatabase/website#5944 ·
-
module: core
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
bigbluebutton/bigbluebutton#25849 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
jaegertracing/jaeger-ui#4506 ·