Azure Functions V4(Node.js)がプレビューになったというブログを目にしました。
function.json
ファイルが必要なくなったということで、ちょっと試してみました。
最初はmacOSで試してみたのですが、どうにも動作が遅かったり、func new
を実行しても動かなかったりとしたので、Linux VMを構築して動かしてみました。
環境構築は以下を参照。
手順は以下を参照。
実際に動かしてみましたが、npm run
を実行するとSyntax error
がでてうまく動かず。あれぇ???
azureuser@myVM0416:~/work$ func init AzureFuncNodeV42 --model V4 Select a number for worker runtime: 1. dotnet 2. dotnet (isolated process) 3. node 4. python 5. powershell 6. custom Choose option: 3 node Select a number for language: 1. javascript 2. typescript Choose option: 1 javascript The new Node.js programming model is in public preview. Learn more at https://aka.ms/AzFuncNodeV4 Writing package.json Writing .funcignore Writing .gitignore Writing host.json Writing local.settings.json Writing /home/azureuser/work/AzureFuncNodeV42/.vscode/extensions.json Running 'npm install'...azureuser@myVM0416:~/work$ azureuser@myVM0416:~/work$ cd AzureFuncNodeV42 azureuser@myVM0416:~/work/AzureFuncNodeV42$ ls host.json node_modules package.json local.settings.json package-lock.json src azureuser@myVM0416:~/work/AzureFuncNodeV42$ func new Select a number for template: 1. Azure Blob Storage trigger 2. Azure Cosmos DB trigger 3. Durable Functions entity 4. Durable Functions orchestrator 5. Azure Event Grid trigger 6. Azure Event Hub trigger 7. HTTP trigger 8. Azure Queue Storage trigger 9. Azure Service Bus Queue trigger 10. Azure Service Bus Topic trigger 11. Timer trigger Choose option: 7 HTTP trigger Function name: [httpTrigger] Creating a new file /home/azureuser/work/AzureFuncNodeV42/src/functions/httpTrigger.js The function "httpTrigger" was created successfully from the "HTTP trigger" template. azureuser@myVM0416:~/work/AzureFuncNodeV42$ npm start > start > func start /home/azureuser/work/AzureFuncNodeV42/node_modules/azure-functions-core-tools/bin/func: 2: Syntax error: Unterminated quoted string azureuser@myVM0416:~/work/AzureFuncNodeV42$
ソースコードとしては以下のようなものが生成されるようです。
const { app } = require('@azure/functions'); app.http('httpTrigger1', { methods: ['GET', 'POST'], authLevel: 'anonymous', handler: async (request, context) => { context.log(`Http function processed request for url "${request.url}"`); const name = request.query.get('name') || await request.text() || 'world'; return { body: `Hello, ${name}!` }; } });