我正在尝试设置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模块。