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

Integrating Webpack with Auth0 or how to add additional Node.js modules to IBM Cloud Functions

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

我可以成功地将函数部署到我的不使用 auth0 库的 IBM Cloud 帐户,但是如果我尝试上传使用 auth0 库的函数,我会收到以下错误:

error: Unable to create action 'function_name': The request content was malformed: Unexpected end-of-input at input index 1394034 (line 1, position 1394035), expected '"':

我尝试在我的 webpack.config.js 文件中使用外部组件:

// webpack.config.js
externals: {
    auth0: "commonjs auth0"
}

// mycode.js
const ManagementClient = require('auth0').ManagementClient;

我可以成功部署函数,但是当我调用端点时收到此错误:

(0 , r(...).ManagementClient) is not a constructor

我找到这篇文章:Adding extra npm modules to IBM Cloud Functions with Docker

基本上,如果我对您的问题的理解是正确的,那么您需要一个 IBM Cloud Functions 基础映像中未包含的附加包。默认包含的包已列出 here。但是 auth0 不在列表中。

所以按照博客 post,您可以创建一个 Docker 文件。

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

我希望这对你有用。我已经更正了这个 post 中的一些拼写错误并进行了测试。到目前为止,我能够在操作代码中使用 auth0 模块。