Azure Functions V4(Node.js)がプレビューになったので試したが動かなかった

Azure Functions V4(Node.js)がプレビューになったというブログを目にしました。

techcommunity.microsoft.com

function.jsonファイルが必要なくなったということで、ちょっと試してみました。

最初はmacOSで試してみたのですが、どうにも動作が遅かったり、func newを実行しても動かなかったりとしたので、Linux VMを構築して動かしてみました。

環境構築は以下を参照。

learn.microsoft.com

手順は以下を参照。

learn.microsoft.com

実際に動かしてみましたが、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}!` };
    }
});