问题描述
我正在尝试将自己的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)不是构造函数
- 我正在使用webpack v5.0.0,并且还尝试了v4.x.x
- Auth0库: https://github.com/auth0/node-auth0
解决方法
我找到了这篇文章: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模块。