如何在pug脚本中访问bashrc环境变量。部分

时间:2019-08-01 23:41:57

标签: node.js express nginx pug

我有一个Recaptcha站点密钥存储在.bashrc中,并且想在我的哈巴狗视图中使用环境变量。我的JS脚本的验证码部分位于“脚本”下。 pug文件中的“”部分。

我尝试使用#{}来插入pug JS变量,并且我已经通过“ route”传递了env变量,但无济于事。插值会在验证码请求中留出空白。

// INDEX ROUTE
var express = require('express');
var router = express.Router();
const request = require('request');
var textUtil = require('../utils/sendText');

router.get('/', function(req, res, next) {
  res.render('index', { title: 'Phoenix Flight Fire Supply', siteKey: process.env.PHOENIX_CAPTCHA_SITE_KEY }); // Passing in 'siteKey'
});


//INDEX PUG FILE
doctype html
html
  head
    title= title

    script(async, src='https://www.googletagmanager.com/gtag/js?id=UA-144999292-1')

    script.
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', 'UA-144999292-1');


    meta(name='viewport' content='width=device-width, initial-scale=1')
    meta(name='theme-color' content='#B61919')
    link(rel='stylesheet', href='/stylesheets/style.css')
    link(rel='stylesheet', href='/stylesheets/flickity.min.css' media='screen')
    link(rel='icon' sizes='192x192' href='images/phoenixfirelogosolid.png')
    script(src='javascripts/flickity.pkgd.min.js')
    script(src='javascripts/libs/inflate.min.js')
    script(src='https://cdnjs.cloudflare.com/ajax/libs/babylonjs/4.0.3/babylon.max.js')
    script(src='https://d3js.org/d3.v3.min.js' language='JavaScript')
    script(src='javascripts/liquidFillGauge.js' language='JavaScript')
    script(src=`https://www.google.com/recaptcha/api.js?render=${siteKey}`)

    link(rel='stylesheet' href='https://use.typekit.net/gmu0vhj.css')
    link(rel='stylesheet' href='https://use.typekit.net/gmu0vhj.css')
    link(rel='stylesheet' href='https://use.typekit.net/gmu0vhj.css')
  body
    block content



... (BODY)



script.
  //RECAPTCA v3 LOAD
    grecaptcha.ready(function() {
      grecaptcha.execute(siteKey, {action: 'submitLead'}).then(function(token){
            // add token value to form
            document.getElementById('g-recaptcha-response').value = token;
        });
    });

虽然我没有收到任何错误,但是recaptcha无法正常工作,因为siteKey是'undefined'。本质上,哈巴狗预处理无法正常工作。

预处理无法识别“ siteKey”。如果我添加#{},则值为”,并且不会显示Recaptcha。

grecaptcha.ready(function() {
  grecaptcha.execute(siteKey, {action: 'submitLead'}).then(function(token) {
        // add token value to form
        document.getElementById('g-recaptcha-response').value = token;
    });
});</script></body></html>

最后一个注意事项:我检查了.bashrc文件,并且环境变量的拼写正确。关键是用引号引起来,我正在运行一个运行Nginx作为Express代理的Ubuntu 18.04环境。

谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

在您的客户端JavaScript中,我认为您从未声明过siteKey变量。

您可以尝试这样的事情吗?

script(src=`https://www.google.com/recaptcha/api.js?render=#{siteKey}`)

...
script.
  const siteKey = #{siteKey}
  //RECAPTCA v3 LOAD
  grecaptcha.ready(function() {
    grecaptcha.execute(siteKey, ...

如果这不起作用,我首先尝试将密钥手动复制到常量中,然后查看应用程序是否正常工作。