VS Code and Azure Functions: Zip Deploy Successful but No Functions Found

Timothy J. Harpster 0 Reputation points
2025-05-09T15:28:51.23+00:00

I successfully completed a zip deployment for my Azure Functions using VS Code, but no functions are recognized in the Azure portal.

Here are the steps taken:

Installed Azure Tools and Azure Functions Core Tools via (Ctrl + Shift + P).

Followed the setup instructions from this answer:

Ran func init <foldername> --model V4 to create the workspace with node_modules (3k+ files) and the necessary JSON files.

Created functions using func new.

npm install @azure/ai-form-recognizer

npm install @azure/functions

Started the function with func start. This just locked up so I CTRL-C

I right click on my function, click deploy to function. The result is what you see in the image.

Despite these steps, the functions were deployed to my function storage account as a zip file, and the files were unzipped in the function app, but they are not recognized (as shown in the image).

Azure setup details:

Two storage accounts: one for the Function App and another for the app.

The functionStorage account has managed identity roles set for reading and writing blobs, tables, and queues.

Azure Function App:

Using a Flex Consumption plan
NOTE: I created my function app in the Azure portal using Create Function app not like https://learn.microsoft.com/en-us/azure/azure-functions/flex-consumption-how-to?tabs=azure-portal%2Cvs-code-publish&pivots=programming-language-javascript#configure-deployment-settings states (this webpage seems obsolete).


To configure deployment settings when you create your function app in the Flex Consumption plan:

You can't currently configure deployment storage when creating your app in the Azure portal. To configure deployment storage during app creation, instead use the Azure CLI to create your app.

You can use the portal to modify the deployment settings of an existing app, as detailed in the next section.

--

Deployment Center - not setup currently (I had previously set up github to deploy using a workflow which was deploying with the same No HTTP triggers found error so i disconnected it and moved deployment to VS Code - now using my connected github to VS Code for version control not deployment)

Environment Variables:

APP_STORAGE_ACCOUNT_KEY, APPLICATIONINSIGHTS_CONNECTION_STRING,

AzureWebJobsFeatureFlags, AzureWebStorage__accountname, DEPLOYMENT_STORAGE_CONNECTION_STRING, FUNC_STORAGE_ACCOUNT_KEY, FUNCTIONS_EXTENSION_VERSION are all properly set in both the workspace local settings and Azure Function - Settings - Environment Variables - App Settings (and SQL_CONNECTION STRING in Connection strings).

Configuration: Node.js version: 22, SCM Basic Auth ON, HTTP version 1.1, TLS version 1.2 and the storage account is connected.

Deployment Settings: Storage assigned, container assigned, System assigned identity auth

Assistance would be greatly appreciated.

extension.json

{
  "recommendations": [
    "ms-azuretools.vscode-azurefunctions"
  ]
}

launch.json

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Attach to Node Functions",
      "type": "node",
      "request": "attach",
      "restart": true,
      "port": 9229,
      "preLaunchTask": "func: host start"
    }
  ]
}

settings.json

{
  "azureFunctions.deploySubpath": ".",
  "azureFunctions.projectSubpath": ".",
  "azureFunctions.postDeployTask": "npm install (functions) --verbose",
  "azureFunctions.projectLanguage": "JavaScript",
  "azureFunctions.projectRuntime": "~4",
  "debug.internalConsoleOptions": "neverOpen",
  "azureFunctions.projectLanguageModel": 4,
  "azureFunctions.preDeployTask": "npm prune (functions) --verbose"  
}

tasks.json

{
  "version": "2.0.0",
  "tasks": [
    {
      "type": "func",
      "label": "func: host start --verbose",
      "command": "host start --verbose",
      "problemMatcher": "$func-node-watch",
      "isBackground": true,
      "dependsOn": "npm install (functions) -- verbose",
    },
    {
      "type": "shell",
      "label": "npm install (functions) --verbose",
      "command": "npm install --verbose"
    },
    {
      "type": "shell",
      "label": "npm prune (functions) --verbose",
      "command": "npm prune --production --verbose",
      "problemMatcher": []
    }
  ]
}

host.json

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "excludedTypes": "Request"
      }
    }
  },
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[4.*, 5.0.0)"
  }
}

package.json

{
  "name": "vs-code",
  "version": "1.0.0",
  "description": "",
  "main": "src/functions/index.js",
  "scripts": {
    "start": "func start --verbose",
    "test": "echo \"No tests yet...\""
  },
  "dependencies": {
    "@azure/ai-form-recognizer": "^5.0.0",
    "@azure/functions": "^4.7.0"
  },
  "devDependencies": {
    "azure-functions-core-tools": "^4.x"
  }
}

example function in src/functions folder

const { app } = require('@azure/functions');

app.http('CreateUser', {
    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}!` };
    }
});

index.js (note i moved this into src/functions folder since the image was posted - troubleshooting)

const { app } = require('@azure/functions');

app.setup({
    enableHttpStream: true,
});

Azure Functions output from VS CODE after deployment

9:57:49 AM omni-func-dev-eus: c:\Users\tjhar\OneDrive - Intek Inc\One Mission\OMNI 2\VS Code\src\functions\CreateUser.js
9:57:49 AM omni-func-dev-eus: Zip package size: 26.2 kB
9:57:50 AM omni-func-dev-eus: Starting deployment pipeline.
9:57:50 AM omni-func-dev-eus: [SourcePackageUriDownloadStep] starting.
9:57:50 AM omni-func-dev-eus: Zip package is present at /tmp/zipdeploy/faaffaec-1ec5-4b7d-871d-7f71ad84fef3.zip
9:57:50 AM omni-func-dev-eus: [ValidationStep] starting.
9:57:50 AM omni-func-dev-eus: [AppSettingValidation] starting.
9:57:50 AM omni-func-dev-eus: [DeploymentStorageValidation] starting.
9:57:50 AM omni-func-dev-eus: Validation completed
9:57:50 AM omni-func-dev-eus: [SourcePackageUriDownloadStep] starting.
9:57:50 AM omni-func-dev-eus: Zip package is present at /tmp/zipdeploy/faaffaec-1ec5-4b7d-871d-7f71ad84fef3.zip
9:57:50 AM omni-func-dev-eus: [ExtractZipStep] starting.
9:57:50 AM omni-func-dev-eus: Cleaning files in /tmp/zipdeploy/extracted
9:57:50 AM omni-func-dev-eus: Extracted zip package in /tmp/zipdeploy/extracted
9:57:50 AM omni-func-dev-eus: [OryxBuildStep] starting.
9:57:50 AM omni-func-dev-eus: Skipping oryx build (remotebuild = false).
9:57:50 AM omni-func-dev-eus: [PackageZipStep] starting.
9:57:50 AM omni-func-dev-eus: Linux Consumption plan has a 1.5 GB memory limit on a remote build container. To check our service limit, please visit https://docs.microsoft.com/en-us/azure/azure-functions/functions-scale#service-limits
9:57:50 AM omni-func-dev-eus: Created zip file with artifacts as /home/site/artifacts/faaffaec-1ec5-4b7d-871d-7f71ad84fef3.zip.
9:57:50 AM omni-func-dev-eus: [UploadPackageStep] starting.
9:57:50 AM omni-func-dev-eus: Using Kudu.Legion.Core.Storage.BlobContainerStorage
9:57:50 AM omni-func-dev-eus: Created blob name: released-package.zip
9:57:50 AM omni-func-dev-eus: Created blob uri: https://omnifuncsadeveus.blob.core.windows.net/app-package-omni-func-dev-eus-e6db756/released-package.zip
9:57:50 AM omni-func-dev-eus: Created Storage Credentials using storage account connection string
9:57:50 AM omni-func-dev-eus: Uploaded blob successfully.
9:57:50 AM omni-func-dev-eus: Uploaded package to storage blob. Deployment is partially successful from here.
9:57:50 AM omni-func-dev-eus: [RemoveWorkersStep] starting.
9:57:50 AM omni-func-dev-eus: RemoveAllWorkers, statusCode = NoContent
9:57:50 AM omni-func-dev-eus: Reset all workers was successful.
9:57:50 AM omni-func-dev-eus: [SyncTriggerStep] starting.
9:57:50 AM omni-func-dev-eus: Waiting 60 seconds for the workers to recycle with deployed content.
9:58:50 AM omni-func-dev-eus: [CleanUpStep] starting.
9:58:50 AM omni-func-dev-eus: Cleaned the source packages directory.
9:58:50 AM omni-func-dev-eus: Cleaned the result artifact directory.
9:58:50 AM omni-func-dev-eus: Finished deployment pipeline.
9:58:51 AM omni-func-dev-eus: FunctionHostSyncTrigger, statusCode = OK
9:58:51 AM omni-func-dev-eus: Performed sync triggers successfully.
9:58:52 AM omni-func-dev-eus: Started postDeployTask "npm install (functions) --verbose".
9:58:53 AM omni-func-dev-eus: Querying triggers...
9:58:55 AM omni-func-dev-eus: No HTTP triggers found.

Azure diagnostics that seem helpful:
As of 2025-05-09 15:10:00, the Function App runtime encountered the below exceptions:

General Info Exception TypeTotal OccurrencesException MessageLatest TimestampAn error occurred initializing the Table Storage Client. We are8An error occurred initializing the Table Storage Client. We are unable to record diagnostic events, so the diagnostic logging service is being stopped.5/9/2025 2:45:21 PMWorker was unable to load entry point 'src/functions/index.js':8Worker was unable to load entry point 'src/functions/index.js': Cannot find module '@azure/functions' Require stack: - /home/site/wwwroot/src/functions/index.js - /azure-functions-host/workers/node/dist/src/worker-bundle.js - /azure-functions-host/workers/node/dist/src/nodejsWorker.js5/9/2025 2:40:40 PMNo job functions found. Try making your job classes and methods8No job functions found. Try making your job classes and methods public. If you're using binding extensions (e.g. Azure Storage, ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers(), etc.).5/9/2025 2:40:40 PM An error occurred initializing the Table Storage Client. We are 8 An error occurred initializing the Table Storage Client. We are unable to record diagnostic events, so the diagnostic logging service is being stopped. 5/9/2025 2:45:21 PM Worker was unable to load entry point 'src/functions/index.js': 8 Worker was unable to load entry point 'src/functions/index.js': Cannot find module '@azure/functions' Require stack: - /home/site/wwwroot/src/functions/index.js - /azure-functions-host/workers/node/dist/src/worker-bundle.js - /azure-functions-host/workers/node/dist/src/nodejsWorker.js 5/9/2025 2:40:40 PM No job functions found. Try making your job classes and methods 8 No job functions found. Try making your job classes and methods public. If you're using binding extensions (e.g. Azure Storage, ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers(), etc.). 5/9/2025 2:40:40 PM
General Info Exception TypeTotal OccurrencesException MessageLatest TimestampAn error occurred initializing the Table Storage Client. We are8An error occurred initializing the Table Storage Client. We are unable to record diagnostic events, so the diagnostic logging service is being stopped.5/9/2025 2:45:21 PMAn error occurred initializing the Table Storage Client. We are8An error occurred initializing the Table Storage Client. We are unable to record diagnostic events, so the diagnostic logging service is being stopped.5/9/2025 2:45:21 PMWorker was unable to load entry point 'src/functions/index.js':8Worker was unable to load entry point 'src/functions/index.js': Cannot find module '@azure/functions' Require stack: - /home/site/wwwroot/src/functions/index.js - /azure-functions-host/workers/node/dist/src/worker-bundle.js - /azure-functions-host/workers/node/dist/src/nodejsWorker.js5/9/2025 2:40:40 PMNo job functions found. Try making your job classes and methods8No job functions found. Try making your job classes and methods public. If you're using binding extensions (e.g. Azure Storage, ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers(), etc.).5/9/2025 2:40:40 PM
Azure Functions
Azure Functions
An Azure service that provides an event-driven serverless compute platform.
5,744 questions
{count} votes