将Webpack与Auth0集成,或者如何向IBM Cloud Functions添加额外的Node.js模块



我正在尝试设置nodejs后端函数,以便将Auth0用于IAM服务。

我可以成功地将不使用auth0库的函数部署到我的IBM云帐户,但如果我尝试上传使用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(不是构造函数

  • 我使用的是webpack v5.0.0,也尝试过v4.x.x
  • Auth0库:https://github.com/auth0/node-auth0

我发现了这篇文章:使用Docker 向IBM云功能添加额外的npm模块

基本上,如果我理解你的问题,你需要一个没有包含在IBMCloudFunctions基本映像中的附加包。此处列出了默认情况下包含的程序包。但是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模块。

相关内容

最新更新