UPDATE操作的自定义事件处理程序在" npm ci"之后的处理失败

2020-08-13 20:53发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好,

我们遇到了与由node.js模块处理的实体上的更新操作有关的问题。 在部署环境中,我们的脚本在运行模块之前执行" npm ci",并根据package-lock.json文件安装所需的依赖项。 我们为实体上的每个分类操作定义了一组自定义事件处理程序,以便将每个CRUD请求转发到外部服务。 由于不支持令牌转发(也许现在是),因此我们创建了一个自定义库,该库针对每个操作将请求分派到该外部服务的正确端点。 当应用程序通过" npm install"运行时一切正常,但在" npm ci"之后情况并非如此。 实际上,尽管READ,CREATE和DELETE操作起作用,但是UPDATE尽管在我们的库中对其进行处理的逻辑是完全相同的事实却不起作用。 我们得到的是一个错误:

 TypeError:无法读取未定义的属性"模式"
     在/srv/node_modules/@sap/cds-runtime/lib/cds-hana/client/Client.js:93:31
     在新的Promise中()
     在Client.connect(/srv/node_modules/@sap/cds-runtime/lib/cds-hana/client/Client.js:66:12)
     在SQLDatabase._testConnection(/srv/node_modules/@sap/cds-runtime/lib/cds-services/connect/Service.js:314:18)
     在SQLDatabase._getAndCheckCredentials(/srv/node_modules/@sap/cds-runtime/lib/cds-services/connect/Service.js:296:17)
     在SQLDatabase._createPool(/srv/node_modules/@sap/cds-runtime/lib/cds-services/connect/Service.js:243:24)
     在SQLDatabase.acquire(/srv/node_modules/@sap/cds-runtime/lib/cds-services/connect/Service.js:149:49)
     在_run(/srv/node_modules/@sap/cds-runtime/lib/cds-services/connect/Transaction.js:57:29)
     在Transaction.run(/srv/node_modules/@sap/cds-runtime/lib/cds-services/connect/Transaction.js:21:12)
     在context.run(/srv/node_modules/@sap/cds-runtime/lib/cds-services/services/Service.js:972:17)

如果它尝试连接到数据库,则会发生这种情况。 如果在我们的方案中不能做到这一点是可以的,并且我们可能需要配置我们的业务应用程序,但是它不应尝试这样做。 引发此错误后,在通过axios(用于发送请求的库)与后端服务执行实际连接的步骤中,将调用自定义事件处理程序,并且处理将停止。 对于与axios相关的每个异常,都有一个catch块,在这种情况下,错误不会得到处理。 实际上,当它停止时,该服务将下降并崩溃。 知道如何解决这个问题吗?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好,

我们遇到了与由node.js模块处理的实体上的更新操作有关的问题。 在部署环境中,我们的脚本在运行模块之前执行" npm ci",并根据package-lock.json文件安装所需的依赖项。 我们为实体上的每个分类操作定义了一组自定义事件处理程序,以便将每个CRUD请求转发到外部服务。 由于不支持令牌转发(也许现在是),因此我们创建了一个自定义库,该库针对每个操作将请求分派到该外部服务的正确端点。 当应用程序通过" npm install"运行时一切正常,但在" npm ci"之后情况并非如此。 实际上,尽管READ,CREATE和DELETE操作起作用,但是UPDATE尽管在我们的库中对其进行处理的逻辑是完全相同的事实却不起作用。 我们得到的是一个错误:

 TypeError:无法读取未定义的属性"模式"
     在/srv/node_modules/@sap/cds-runtime/lib/cds-hana/client/Client.js:93:31
     在新的Promise中()
     在Client.connect(/srv/node_modules/@sap/cds-runtime/lib/cds-hana/client/Client.js:66:12)
     在SQLDatabase._testConnection(/srv/node_modules/@sap/cds-runtime/lib/cds-services/connect/Service.js:314:18)
     在SQLDatabase._getAndCheckCredentials(/srv/node_modules/@sap/cds-runtime/lib/cds-services/connect/Service.js:296:17)
     在SQLDatabase._createPool(/srv/node_modules/@sap/cds-runtime/lib/cds-services/connect/Service.js:243:24)
     在SQLDatabase.acquire(/srv/node_modules/@sap/cds-runtime/lib/cds-services/connect/Service.js:149:49)
     在_run(/srv/node_modules/@sap/cds-runtime/lib/cds-services/connect/Transaction.js:57:29)
     在Transaction.run(/srv/node_modules/@sap/cds-runtime/lib/cds-services/connect/Transaction.js:21:12)
     在context.run(/srv/node_modules/@sap/cds-runtime/lib/cds-services/services/Service.js:972:17)

如果它尝试连接到数据库,则会发生这种情况。 如果在我们的方案中不能做到这一点是可以的,并且我们可能需要配置我们的业务应用程序,但是它不应尝试这样做。 引发此错误后,在通过axios(用于发送请求的库)与后端服务执行实际连接的步骤中,将调用自定义事件处理程序,并且处理将停止。 对于与axios相关的每个异常,都有一个catch块,在这种情况下,错误不会得到处理。 实际上,当它停止时,该服务将下降并崩溃。 知道如何解决这个问题吗?

付费偷看设置
发送
2条回答
wang628962
1楼-- · 2020-08-13 21:26

嗨Danilo,

感谢您报告此错误。 您是否尝试使用我们的最新版本4.1.5来运行它?

感谢和问候,
大卫

My梦
2楼-- · 2020-08-13 21:16

你好戴维·昆兹

我尝试使用4.1.5版本运行它,但是似乎不再执行包含自定义事件处理程序定义的.js文件。 如文档中所述,我们在同一文件夹中有一个具有相同名称的.cds文件和.js文件。

致谢

一周热门 更多>