将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模块。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...