部署时,不显示 {{ #with }} 中的 HTML 内容
When deployed, HTML content inside a {{ #with }} is not displayed
我有一个流星代码,在 运行 本地主机上工作得很好,但是当我将它部署在 Google 云中时,几乎所有东西都可以工作,除了我的一个页面包含一个表单,并且该表格我预先填充了来自服务器的数据。
这是我的 HTML:
<template name="ConfigForm">
{{ #with configurationData }}
<form class="update-config">
<div class="row">
<div class="col-lg-6">
<p>Email Recipients</p>
</div>
<div class="col-lg-6">
<label for="decimal" class="sr-only">Email Recipients</label>
<input type="text" id="send_to_email" class="form-control" placeholder="Email Recipients" autofocus value="{{ send_to_email }}">
</div>
</div>
....
然后,我的这个特定页面的 javascript 文件有:
Template.ConfigForm.onCreated(function bodyOnCreated() {
Meteor.call('getConfig',function(err,response) {
if(err) {
console.error('Error')
return;
}
Session.set('config', response);
});
});
Template.ConfigForm.helpers({
configurationData: function() {
return Session.get('config')
}
});
最后,我的服务器 Meteor.methods
定义了 return 用于填充表单的配置 JSON 对象。正如我提到的,它在 localhost 中工作得很好。
当我打开已部署的网页并查看 Chrome 控制台时,我看到的是:
所以这让我想到我的部署配置可能存在一些问题,更具体地说是关于粘性会话。但不太确定,也不确定我可以在我的部署脚本中更改什么来解决这个问题。
最后,我用于 GCloud 部署的 Dockerfile 是:
FROM gcr.io/google_appengine/nodejs
RUN install_node v4.8.2
COPY . /app/
RUN (cd programs/server && npm install --unsafe-perm)
CMD node main.js
非常感谢任何帮助,谢谢。
编辑:
按要求添加 getConfig 方法:
Meteor.methods({
getConfig: function() {
return {
btcmBTCFee:btcm_btc_fee,
btcmBTCTransferFee:transfer_fee,
indyBTCFee:indy_btc_fee,
indyBTCTransferFee:transfer_fee,
coinjarBTCFee:coinjar_btc_fee,
coinjarBTCTransferFee:transfer_fee,
coinspotBTCFee:coinspot_btc_fee,
coinspotBTCTransferFee:transfer_fee,
russelBTCFee:coinspot_russel_btc_fee,
russelBTCTransferFee:transfer_fee,
acxBTCFee:acx_btc_fee,
acxBTCTransferFee:transfer_fee,
btcmLTCFee:btcm_ltc_fee,
btcmLTCTransferFee:transfer_fee,
indyLTCFee:indy_ltc_fee,
indyLTCTransferFee:transfer_fee,
coinspotLTCFee:coinspot_ltc_fee,
coinspotLTCTransferFee:transfer_fee,
russellLTCFee:coinspot_russel_ltc_fee,
russellLTCTransferFee:transfer_fee,
minimum_pct_for_alert:minimum_pct_for_alert,
minimum_variation_pct_to_send_alert:minimum_variation_pct_to_send_alert,
enable_send_alert:enable_send_alert,
send_to_email:send_to_email
};
}
});
这是一个极其简单的函数,它只是returning 全局变量。我什至还没有阅读 MongoDB。
编辑2:
我居然忘了我有 app.yml 文件, ROOT_URL 在那里,而且正确:
entrypoint: meteor run
env: flex
runtime: custom
env_variables:
ROOT_URL: https://<<url>>.appspot.com/
MONGO_URL: "mongodb://<<user>>:<<pw>>@ds157444.mlab.com:57444/arbot"
DISABLE_WEBSOCKETS: "1"
skip_files:
- ^(.*/)?\.dockerignore$
- ^(.*/)?\npm-debug.log$
- ^(.*/)?\yarn-error.log$
- ^(.*/)?\.git$
- ^(.*/)?\.hg$
- ^(.*/)?\.svn$
解决方案:
我成功了!
我决定将 DISABLE_WEBSOCKETS: "1"
更改为 DISABLE_WEBSOCKETS: "0"
和 tada!!在职的!! :)
解决方案:
我成功了!我决定将 DISABLE_WEBSOCKETS: "1" 更改为 DISABLE_WEBSOCKETS: "0" 和 tada!!在职的!! :)
我有一个流星代码,在 运行 本地主机上工作得很好,但是当我将它部署在 Google 云中时,几乎所有东西都可以工作,除了我的一个页面包含一个表单,并且该表格我预先填充了来自服务器的数据。
这是我的 HTML:
<template name="ConfigForm">
{{ #with configurationData }}
<form class="update-config">
<div class="row">
<div class="col-lg-6">
<p>Email Recipients</p>
</div>
<div class="col-lg-6">
<label for="decimal" class="sr-only">Email Recipients</label>
<input type="text" id="send_to_email" class="form-control" placeholder="Email Recipients" autofocus value="{{ send_to_email }}">
</div>
</div>
....
然后,我的这个特定页面的 javascript 文件有:
Template.ConfigForm.onCreated(function bodyOnCreated() {
Meteor.call('getConfig',function(err,response) {
if(err) {
console.error('Error')
return;
}
Session.set('config', response);
});
});
Template.ConfigForm.helpers({
configurationData: function() {
return Session.get('config')
}
});
最后,我的服务器 Meteor.methods
定义了 return 用于填充表单的配置 JSON 对象。正如我提到的,它在 localhost 中工作得很好。
当我打开已部署的网页并查看 Chrome 控制台时,我看到的是:
所以这让我想到我的部署配置可能存在一些问题,更具体地说是关于粘性会话。但不太确定,也不确定我可以在我的部署脚本中更改什么来解决这个问题。
最后,我用于 GCloud 部署的 Dockerfile 是:
FROM gcr.io/google_appengine/nodejs
RUN install_node v4.8.2
COPY . /app/
RUN (cd programs/server && npm install --unsafe-perm)
CMD node main.js
非常感谢任何帮助,谢谢。
编辑: 按要求添加 getConfig 方法:
Meteor.methods({
getConfig: function() {
return {
btcmBTCFee:btcm_btc_fee,
btcmBTCTransferFee:transfer_fee,
indyBTCFee:indy_btc_fee,
indyBTCTransferFee:transfer_fee,
coinjarBTCFee:coinjar_btc_fee,
coinjarBTCTransferFee:transfer_fee,
coinspotBTCFee:coinspot_btc_fee,
coinspotBTCTransferFee:transfer_fee,
russelBTCFee:coinspot_russel_btc_fee,
russelBTCTransferFee:transfer_fee,
acxBTCFee:acx_btc_fee,
acxBTCTransferFee:transfer_fee,
btcmLTCFee:btcm_ltc_fee,
btcmLTCTransferFee:transfer_fee,
indyLTCFee:indy_ltc_fee,
indyLTCTransferFee:transfer_fee,
coinspotLTCFee:coinspot_ltc_fee,
coinspotLTCTransferFee:transfer_fee,
russellLTCFee:coinspot_russel_ltc_fee,
russellLTCTransferFee:transfer_fee,
minimum_pct_for_alert:minimum_pct_for_alert,
minimum_variation_pct_to_send_alert:minimum_variation_pct_to_send_alert,
enable_send_alert:enable_send_alert,
send_to_email:send_to_email
};
}
});
这是一个极其简单的函数,它只是returning 全局变量。我什至还没有阅读 MongoDB。
编辑2:
我居然忘了我有 app.yml 文件, ROOT_URL 在那里,而且正确:
entrypoint: meteor run
env: flex
runtime: custom
env_variables:
ROOT_URL: https://<<url>>.appspot.com/
MONGO_URL: "mongodb://<<user>>:<<pw>>@ds157444.mlab.com:57444/arbot"
DISABLE_WEBSOCKETS: "1"
skip_files:
- ^(.*/)?\.dockerignore$
- ^(.*/)?\npm-debug.log$
- ^(.*/)?\yarn-error.log$
- ^(.*/)?\.git$
- ^(.*/)?\.hg$
- ^(.*/)?\.svn$
解决方案:
我成功了!
我决定将 DISABLE_WEBSOCKETS: "1"
更改为 DISABLE_WEBSOCKETS: "0"
和 tada!!在职的!! :)
解决方案:
我成功了!我决定将 DISABLE_WEBSOCKETS: "1" 更改为 DISABLE_WEBSOCKETS: "0" 和 tada!!在职的!! :)