sap-cf-mailer VError: ни одна служба не соответствует месту назначения
У меня есть приложение SAP CAP Nodejs, и я пытаюсь отправлять электронные письма из приложения CAP, используя пакет sap-cf-mailer .
Я создал целевую службу в BTP, как упоминалось в примере, и когда я пытался развернуть приложение на BTP, это не удалось.
Когда я запускаю приложение локально, используя
cds watch
, это дает следующую ошибку
VError: ни одна служба не соответствует пункту назначения
Это мой мта.ямл
## Generated mta.yaml based on template version 0.4.0
## appName = CapTest
## language=nodejs; multitenant=false
## approuter=
_schema-version: '3.1'
ID: CapTest
version: 1.0.0
description: "A simple CAP project."
parameters:
enable-parallel-deployments: true
build-parameters:
before-all:
- builder: custom
commands:
- npm install --production
- npx -p @sap/cds-dk cds build --production
modules:
# --------------------- SERVER MODULE ------------------------
- name: CapTest-srv
# ------------------------------------------------------------
type: nodejs
path: gen/srv
parameters:
buildpack: nodejs_buildpack
requires:
# Resources extracted from CAP configuration
- name: CapTest-db
- name: captest-destination-srv
provides:
- name: srv-api # required by consumers of CAP services (e.g. approuter)
properties:
srv-url: ${default-url}
# -------------------- SIDECAR MODULE ------------------------
- name: CapTest-db-deployer
# ------------------------------------------------------------
type: hdb
path: gen/db
parameters:
buildpack: nodejs_buildpack
requires:
# 'hana' and 'xsuaa' resources extracted from CAP configuration
- name: CapTest-db
resources:
# services extracted from CAP configuration
# 'service-plan' can be configured via 'cds.requires.<name>.vcap.plan'
# ------------------------------------------------------------
- name: CapTest-db
# ------------------------------------------------------------
type: com.sap.xs.hdi-container
parameters:
service: hana # or 'hanatrial' on trial landscapes
service-plan: hdi-shared
properties:
hdi-service-name: ${service-name}
- name: captest-destination-srv
type: org.cloudfoundry.existing-service
Это js-файл сервиса CDS.
const cds = require('@sap/cds')
const SapCfMailer = require('sap-cf-mailer').default;
const transporter = new SapCfMailer("MAILTRAP");
module.exports = cds.service.impl(function () {
this.on('sendmail', sendmail);
});
async function sendmail(req) {
try {
const result = await transporter.sendMail({
to: 'someoneimportant@sap.com',
subject: `This is the mail subject`,
text: `body of the email`
});
return JSON.stringify(result);
}
catch{
}
};
Я следую приведенным ниже образцам для этого
1 ответ
Вы создали файлы default-.. json? Они необходимы для подключения к удаленным службам вашего клиента BTP. Вы можете найти больше информации об этом в блогах SAP, подобных этому:https://blogs.sap.com/2020/04/03/sap-application-router/
Вы также можете использовать команду sap-cf-localenv:https://github.com/jowavp/sap-cf-localenv
Этот инструмент является экспериментальным, насколько я знаю, он работает только для CF CLI V6. Более высокие версии извлекают служебные ключи в другом формате, что приводит к сбою команды.
С уважением, Томас