Environment Variables

You can provide environment variables to Azle canisters by specifying their names in your dfx.json file and then using the process.env object in Azle. Be aware that the environment variables that you specify in your dfx.json file will be included in plain text in your canister's Wasm binary.

dfx.json

Modify your dfx.json file with the env property to specify which environment variables you would like included in your Azle canister's binary. In this case, CANISTER1_PRINCIPAL and CANISTER2_PRINCIPAL will be included:

{
    "canisters": {
        "canister1": {
            "type": "azle",
            "main": "src/canister1/index.ts",
            "declarations": {
                "output": "test/dfx_generated/canister1",
                "node_compatibility": true
            },
            "custom": {
                "experimental": true,
                "candid_gen": "http",
                "env": ["CANISTER1_PRINCIPAL", "CANISTER2_PRINCIPAL"]
            }
        }
    }
}

process.env

You can access the specified environment variables in Azle like so:

import { Canister, query, text } from 'azle/experimental';

export default Canister({
    canister1PrincipalEnvVar: query([], text, () => {
        return (
            process.env.CANISTER1_PRINCIPAL ??
            'process.env.CANISTER1_PRINCIPAL is undefined'
        );
    }),
    canister2PrincipalEnvVar: query([], text, () => {
        return (
            process.env.CANISTER2_PRINCIPAL ??
            'process.env.CANISTER2_PRINCIPAL is undefined'
        );
    })
});