Search code examples
node.jsgoogle-translate

How to setup Google Translate API for Node.js?


I want to use Googles Cloud Translation API in my Node.js application, however I'm getting a The request is missing a valid API key. error.

I have followed the Quickstart guide provided by Google.

I have created GCP project, downloaded the private key as JSON file and setup the environment variable in Powershell (img).

After that I've installed the library with yarn add @google-cloud/translate

The code I'm running in my translate.js file comes from the Quickstart guide with additional try-catch blocks:

async function quickstart(
  projectId = process.env.PROJECT_ID // Project Id from JSON file
) {
  try {
    // Imports the Google Cloud client library
    const { Translate } = require('@google-cloud/translate');
    // Instantiates a client
    const translate = new Translate({ projectId });

    // The text to translate
    const text = 'Hello, world!';

    // The target language
    const target = 'ru';

    // Translates some text into Russian
    const [translation] = await translate.translate(text, target);
    console.log('Text:', text);
    console.log('Translation:', translation);
  } catch (error) {
    console.error(error);
  }
}

quickstart();

When I then run node translate.js, I'll get an Error:

{ Error: The request is missing a valid API key.
   ...

  code: 403,
  errors:
   [ { message: 'The request is missing a valid API key.',
       domain: 'global',
       reason: 'forbidden' } ],
  response: undefined,
  message: 'The request is missing a valid API key.' }

I am on Windows 10, Node v10.13.0.


Solution

  • Believe you would have missed this environment variable defining , before starting the node service

    Replace [PATH] with the file path of the JSON file that contains your service account key, and [FILE_NAME] with the filename.

    With PowerShell:

    $env:GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
    
    For example:
    
    $env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\[FILE_NAME].json"