node.js - 将 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) 不是构造函数
- 我正在使用 webpack v5.0.0 并尝试使用 v4.xx
- Auth0 库: https ://github.com/auth0/node-auth0
解决方案
我找到了这篇文章:使用 Docker 向 IBM Cloud Functions 添加额外的 npm 模块
基本上,如果我正确理解您的问题,您需要一个未包含在 IBM Cloud Functions 基础映像中的附加包。此处列出了默认包含的软件包。但是 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 模块。
推荐阅读
- android - 无法创建任务 ':app:minifyReleaseWithR8'。无法查询此提供程序的值,因为它没有可用的值
- c - 3.3 C中读取的字符串不能倒序输出
- python - 如何使用 unittest.mock.patch 模拟 MongoClient(“TypeError:'MongoClient' 对象不可调用”)
- c# - ExecuteNonQuery 导致数据类型不匹配错误?
- sql-server - 出于测试目的,通过服务器计算机上的 IP 连接到我的 SQL 服务器是否与其他计算机不同?
- html - Html 到 Excel (xls) 文件不接受使用 Codeigniter 的图像高度宽度
- r - 计算R中所有以下向量元素的乘积
- flutter - Dart / Flutter - 如何将传递的字符串转换为列表名称?
- python - 写入文本文件程序:从 Python 2 转换为 Python 3
- keycloak - 重新生成注册访问令牌 crash keycloak 无限循环