谷歌云函数错误:"Cannot find module 'sharp'"但它在我的包中.json



我正在尝试将一个函数部署到Google Cloud Functions。我基于他们的ImageMagick教程。

每次,函数都会因为遇到错误而无法部署。查看日志,错误为:

Provided module can't be loaded. 
Did you list all required modules in the package.json dependencies? 
Detailed stack trace: 
Error: Cannot find module 'sharp' 

我不明白为什么会发生这种情况,因为sharp在我的package.json依赖项中是。如果我在Google Cloud控制台中打开该函数的web编辑器,则package.json作为其中一个文件存在,并将sharp显示为依赖项。我尝试运行npm installnpm install --save并重新部署,但这并没有解决任何问题。

我在函数中包含了带有const sharp = require('sharp');的包(这是日志显示错误发生的行(,这是我的package.json:

{
"name": "Resize images",
"version": "0.0.1",
"private": true,
"author": "James Tyner",
"engines": {
"node": ">=10.0.0"
},
"dependencies": {
"@google-cloud/storage": "^5.0.0",
"sharp": "^0.25.4"
}
}

你能帮我弄清楚我做错了什么吗?

自从我被诱骗在项目目录中安装软件包以来,这种情况已经发生过很多次了。它在本地运行良好,但在尝试部署时会产生错误。

当我把目录改为functions文件夹,而不是firebase项目文件夹,并在那里安装了一个软件包时,这对我来说很有效

cd functions
npm install [your missing package] --save

我遇到了这个问题。各种依赖关系导致我的功能部署失败。经过一番挖掘,我发现对等依赖关系没有被包括在内。

添加此修复了我的问题

"scripts": {
...
"gcp-build": "npm i npm-install-peers"
},

检查文档。CCD_ 10命令允许我们在功能构建过程中执行自定义构建步骤。

不知怎么的,我能够解决这个问题,但我不完全理解我的不同之处。当我运行npm install时,我发现package.json中列出的依赖项没有安装,所以我创建了一个单独的文件夹,并将代码复制到那里,在新文件夹中运行npm install,从那里开始运行得很好。从那时起,当我更改依赖项并重新部署函数时,它们一直正常工作。

使用Node v12.13.1和带有webpack的无服务器部署到GCP和云功能,我一直在努力解决这个问题。在我的情况下,它是一个不同的模块。问题是node_modules中的没有模块可以要求或导入。如果看一下serverless目录中的webpack zip文件,原因就很清楚了;主";包中包含.json。

解决方案是调整webpack.config.js,以显式地包含那些丢失的文件。

webpack.config.js

相关内容

  • 没有找到相关文章

最新更新