我觉得这没用,因为我的难题已经在几个不同的线程中讨论过了,但没有任何效果.

我在AWS Elastic Beanstalk上部署了一个ExpressJS/node服务器.当我几周前第一次try 部署时,我无法让它运行,直到我最终意识到我的许多依赖项之一(一个叫做Sharp的惊人图像大小调整工具)正在 destruct 它.我卸载了它,并删除了它在服务器中的用法.一切都很好.但我真的需要它——当我在本地设备上运行服务器时,它工作得很好.

但当我重新安装和部署时,我会出现以下错误:

npm ERR! path /var/app/staging/node_modules/sharp
npm ERR! command failed
npm ERR! command sh -c (node install/libvips && node install/dll-copy && prebuild-install) || (node install/can-compile && node-gyp rebuild && node install/dll-copy)
npm ERR! sharp: Are you trying to install as a root or sudo user? Try again with the --unsafe-perm flag
npm ERR! sharp: Please see https://sharp.pixelplumbing.com/install for required dependencies
npm ERR! sharp: Installation error: EACCES: permission denied, mkdir '/root/.npm'

网络上的大多数答案都是将unsafe perm=true作为环境变量设置在名为的文件中.npmrc,使用.配置文件.向根用户授予写入权限的ebextensions...在谷歌上搜索任何与锋利而有弹性的豆茎有关的东西,或者我的具体错误,都会给我带来无尽的紫色链接.但什么都没起作用.

编辑:我没有继续努力让Sharp工作,而是找到了另一种叫做Jimp的工具.可能不如夏普强大,但我真的需要调整尺寸,它可以做到这一点,所以如果有人因为这个问题而发飙,请考虑省go 自己的头痛,然后 Select Jimp.

推荐答案

请参考我在以下GitHub问题(Fails to install on AWS ElasticBeanstalk with node16 #3221)中提供的"变通"解决方案,以获得完整的解释.

Solution:

  1. 在应用程序包的根目录中创建以下平台挂钩路径.
  • .平台/挂钩/预制
  • .平台/配置挂钩/预构建
  1. 创建以下具有执行权限(chmod+x)的bash脚本(00_npm_install.sh).
#!/bin/bash
cd /var/app/staging
sudo -u webapp npm install sharp
  1. 验证应用程序包 struct .

示例项目 struct :

~/my-app/
├── app.js
├── index.html
├── .npmrc_bkp
├── package.json
├── package-lock.json
├── .platform
│   ├── confighooks
│   │   └── prebuild
│   │       └── 00_npm_install.sh
│   └── hooks
│       └── prebuild
│           └── 00_npm_install.sh
└── Procfile
  1. 部署应用程序!

希望有帮助!

Node.js相关问答推荐

在Android Studio中react 本机构建失败:未正确检测到Node.js版本

Mongoose查询-如何根据当前查找ID获取其他集合并将其插入到当前查找中?

控制台显示一个长对象,我可以';每当我发布更新Mongoose数据库的请求时,我都不知道错误是什么,

下一个API路由如何处理多个并发请求?

为什么 Cors 在 NodeJS 中不起作用

使用pm2启动服务器

Solidity 将数据位置从内存更改为存储

我误解了外键的工作原理吗?使用续集

MongoDB Aggregate - 如何使用前一阶段的值作为下一阶段的字段名称?

在系统启动时启动本地 node 服务器

如何在 NestJS 中使用外部生成的 swagger.json?

如何使用来自前一阶段的另一个数组的聚合mongoose 在数组中添加字段

如何在 NodeJS 中获取操作系统用户名?

如何在 Mongoose 模式中设置数组大小限制

如何在离线时安装 npm 包?

npm WARN 不推荐使用 graceful-fs@3.0.8:graceful-fs 版本 3

如何从 Node.js 中的 URL 获取

如何从 Node.js 应用程序Ping?

AWS Lambda 函数写入 S3

node.js 中的意外保留字导入