Skip to content

Error in Google Cloud Function Using Cloud Functions Framework #624

@jimstenoo

Description

@jimstenoo

Description:

When deploying a Google Cloud Function using the Cloud Functions Framework, the following error occurs:

Error: No default engine was specified and no extension was provided.
    at new View (/workspace/node_modules/express/lib/view.js:61:11)
    at Function.render (/workspace/node_modules/express/lib/application.js:587:12)
    at ServerResponse.render (/workspace/node_modules/express/lib/response.js:1048:7)
    at errorHandler (/workspace/node_modules/@google-cloud/functions-framework/build/src/logger.js:78:9)
    at Layer.handle_error (/workspace/node_modules/express/lib/router/layer.js:71:5)
    at trim_prefix (/workspace/node_modules/express/lib/router/index.js:326:13)
    at /workspace/node_modules/express/lib/router/index.js:286:9
    at Function.process_params (/workspace/node_modules/express/lib/router/index.js:346:12)
    at next (/workspace/node_modules/express/lib/router/index.js:280:10)
    at Layer.handle_error (/workspace/node_modules/express/lib/router/layer.js:67:12)

Steps to Reproduce:

  1. Create a Google Cloud Function
  2. Deploy the function to Google Cloud.
  3. Include a function using the functions-framework

Expected Behavior:

The function should execute and process any incoming requests

Actual Behavior:

The function fails with the above error, whereas I am not using express directly in the cloud function. It looks like the error is coming from the functions-framework that uses express.

Screenshot 2024-07-22 at 16 05 55

Possible Cause:

The error suggests that no default view engine is specified, and the view file's extension is not provided in the render method. This can happen if the view engine is not configured properly in the Express application setup.

Possible Solution:

To resolve this issue, ensure that the view engine is specified in the Express application. For example, if using Pug (formerly Jade) as the view engine, the configuration should look like this:

const express = require('express');
const app = express();

// Set the view engine to Pug
app.set('view engine', 'pug');

// Define the views directory
app.set('views', './views');

// Example route
app.get('/', (req, res) => {
  res.render('index'); // Ensure 'index.pug' exists in the 'views' directory
});
...

Ensure that:

  • The view engine is set correctly using app.set('view engine', 'engine_name').
  • The views directory is set using app.set('views', 'path_to_views_directory').
  • The view files have the appropriate extension, e.g., .pug, .ejs.

Additional Information:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions