【发布时间】:2018-03-14 06:40:16
【问题描述】:
我想在我的 index.html 文件中插入 GTM 代码。并且该代码应该只在我的网站的 prod 环境中执行
我的 index.html 文件
<head>
<link rel="import" href="ftl/gtm.ftl">
</head>
我的 gtm.ftl 文件的内容如下 ->
<script>
var config = require('./config').server;
var env =config.env;
console.log(env);
if (config.env && config.env=='PROD'){
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push(
{'gtm.start': new Date().getTime(),event:'gtm.js'}
);var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM');
}else{
console.log("helloo");
}
</script>
<!-- End Google Tag Manager -->
我只想在 prod 环境中加载谷歌标签管理器脚本。问题无法读取 ftl 文件中的 config.env 变量。
我的 server.js 文件
'use strict';
module.exports = {
api_base_url : process.env.API_BASE_URL ? process.env.API_BASE_URL :'http://localhost:8080',
port : process.env.PORT ? process.env.PORT :8000 ,
env : process.env.ENV ? process.env.ENV :'DEV',
};
如何在 ftl 文件中获取这个环境变量。
我也尝试使用 javascript,而不是使用 ftl 文件。
<head>
<script src="ftl/gtm.js"> </script>
</head>
在我的 server.js 文件中
var express = require('express'); // call express
var app = express(); // define our app using express
var config = require('./config').server;
var env = config.env;
app.set('env' ,env);
现在在我的 ftl/gtm.js 中,我在下面做 ->
<% if (env && env =='PROD') { %>
console.log("Please load for PROD");
<% }else{
console.log("hellllooooo");
} %>
我的要求只是添加 if 条件..基于某些变量。变量的值来自 node.js process.env 变量。基于此,我想在浏览器中加载脚本。
我是节点新手。任何帮助将不胜感激。
【问题讨论】:
-
如果文件名为 server.js 你需要使用 require('./server') 或者你有另一个文件名为 config.js 吗?
-
不..我只有 server.js 文件。但我仍然收到错误'require is not defined'
-
你是在浏览器还是在 node.js 中运行这个?
-
我在 node.js 中运行
标签: node.js environment-variables