我已经创建了一个Netlify站点,它运行一个create-react-app项目并使用Netlify的lambda函数特性。然而,当我尝试使用诸如mysql或mysql2之类的包时,我得到了webpack错误。这些都记录在每个库的github问题上,但我无法访问webpack的配置来添加“快速修复”。我不能想象我是唯一遇到这个问题的人,但是我有什么选择呢?
有没有办法防止webpack接触我的服务器端软件包?这是因为Netlify在同一根目录中存储客户端和服务器端代码的方式吗?
在过去的几天里,我几乎用尽了我能想到的每一种选择。任何建议或见解都将不胜感激。
发布于 2019-06-19 08:50:23
因此,部署Netlify的lambda函数的方法不止一种。请记住,lambda函数只是导出处理程序的节点模块。在构建之后,Netlify将使用build in netlify.toml
下的functions值来获取要为您的函数部署的目录。
创建这些函数的常用方法
从terminal.
netlify-cli
) build.functions
下的netlify.toml
中指定的文件夹。这使您可以使用针对现代Javascript.build.functions
.下netlify.toml
中指定的目录
在这种情况下,最后一个选项可能是您想要使用的。
使用最后一个选项设置要部署的函数
netlify.toml
[build]
functions = "functions"
/functions/somefunction/somefunction.js
var mysql = require('mysql');
.
.
exports.handler = (event, context) => {
.
.
}
.
创建包含所需依赖项的/functions/somefunction/package.json
文件。在这种情况下,您将使用mysql
,以及函数中需要的任何其他函数。还应该使用package-lock.json
文件锁定您想要的版本。
在根package.json中,为cd ./functions/somefunction && npm install
设置预处理脚本命令,以便在执行任何构建命令之前安装依赖项。这将把依赖项捆绑到/functions/somefunction/node_modules
中,并准备好与somefunction
函数一起部署netlify。预处理命令将允许您将node_modules留在git存储库之外。
使用上述方法的Here is an example of a create-react-app
with netlify functions,其中函数不是使用webpack或netlify-lambda
绑定的,但具有在部署之前的构建过程中预安装的依赖项。此示例使用joke-async
函数的子目录。
https://stackoverflow.com/questions/56641157
复制相似问题