将Webpack与Auth0集成或如何将其他Node.js模块添加到IBM Cloud Functions

问题描述

我正在尝试将自己的nodejs后端函数设置为将Auth0用于IAM服务。

我可以成功地将功能部署到不使用auth0库的IBM Cloud帐户中,但是如果我尝试上载使用auth0库的功能,则会收到以下错误

错误:无法创建操作“ function_name”:请求内容 格式错误:输入索引1394034处输入意外结束(第1行, 位置1394035),应为'“':

我尝试在webpack.config.js文件中使用外部组件:

// webpack.config.js
externals: {
    auth0: "commonjs auth0"
}

// mycode.js
const ManagementClient = require('auth0').ManagementClient;

我可以成功部署该函数,但是当我调用端点时,我收到此错误

(0,r(...)。ManagementClient)不是构造函数

解决方法

我找到了这篇文章:Adding extra npm modules to IBM Cloud Functions with Docker

基本上,如果我理解您的问题正确,那么您需要IBM Cloud Functions基本映像中未包含的其他软件包。默认情况下包含的软件包在here中列出。但是auth0不在列表中。

因此在博客文章之后,您可以创建一个Dockerfile。

FROM ibmfunctions/action-nodejs-v10 
RUN npm install auth0

构建映像(假设您具有docker构建环境和可用的Docker帐户)并将其推送至Dockerhub:

docker build -t your_docker_username/action-nodejs-v10-auth0 .
docker tag your_docker_username/action-nodejs-v10-auth0:latest your_docker_username/action-nodejs-v10-auth0:0.0.1
docker push your_docker_username/action-nodejs-v10-auth0:0.0.1

现在您可以创建一个包含以下内容的source.js文件

var ManagementClient = require('auth0').ManagementClient;

以及其余代码。

ibmcloud fn action update myAuth0Function --docker your_docker_username/action-nodejs-v10-auth0:0.0.1 source.js

我希望这对您有用。我已经纠正了这篇文章中的一些错字并对其进行了测试。到目前为止,它一直有效,我可以在操作代码中使用auth0模块。