【问题标题】:How to deploy Nuxt.js to Elastic Beanstalk?如何将 Nuxt.js 部署到 Elastic Beanstalk?
【发布时间】:2020-01-29 02:54:09
【问题描述】:

我对 AWS 很陌生,我一直在关注那里的教程,但找不到答案。所以,我所做的是我创建了简单的 nuxt 应用程序,没有更改框架的脚本或任何东西。我将弹性 beanstalk 设置为运行 node.js 设置。然后我尝试按照每个教程的说明将我的 /dist 文件夹(使用 nuxt 构建)与应用程序的 json 文件夹一起部署。但它给了我这个this is what it looks on my webpage 我认为我部署的文件夹有问题,或者我必须通过 aws CLI 实际部署,这有什么不同吗?

电子日志:

-------------------------------------
/var/log/nodejs/nodejs.log
-------------------------------------
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /tmp/.npm/_logs/2019-09-29T16_00_28_939Z-debug.log

> portfolio@1.0.0 start /var/app/current
> cross-env NODE_ENV=production node server/index.js

internal/modules/cjs/loader.js:638
    throw err;
    ^

Error: Cannot find module '/var/app/current/server/index.js'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)



【问题讨论】:

  • 你需要添加一些你正在做的事情的例子。构建命令、EB 日志、使用 nuxt start 或 nuxt generate 运行?您提供的屏幕截图可能有很多问题,例如您的反向代理未正确转发请求、引用了错误的构建文件夹或错误地压缩了 dist 文件夹的内容
  • @user27 请分享您的代码文件夹层次结构,您正在elasticbeanstalk 上上传。

标签: node.js amazon-web-services deployment nuxt.js


【解决方案1】:

nodejs 日志向我表明构建存在问题、压缩方式存在问题或您的启动命令存在问题。

最常见的是不正确的压缩source files

在 Mac OS X Finder 或 Windows 资源管理器中创建 ZIP 文件时,请确保压缩文件和子文件夹本身,而不是压缩父文件夹。

换句话说,不要右键单击 dist 文件夹并单击“zip”,选择所有文件和文件夹(包括隐藏的)并压缩它们。 Elastic beanstalk 和许多其他 AWS 服务都希望 zip 解压缩成扁平结构,并且在解压缩时不包含父文件夹。

如果这不能解决您的问题,请确保您正在压缩正确的文件夹。尝试删除您的 .nuxt 和 /dist 文件夹,并在本地运行 npm run build。生成的文件夹(默认为 .nuxt)是需要压缩其内容的文件夹。

【讨论】:

    【解决方案2】:

    引发该错误的原因是您的启动命令以cross-env 开头。当它看到它尝试运行全局安装的包 cross-env 但它在全局不可用时,它会抛出该错误。有几种可能的方法来解决这个问题:

    1. 最简单的方法是将启动命令更改为使用本地安装版本cross-env 的相对路径,因此您的命令应如下所示:

      node_modules/cross-env/src/bin/cross-env.js node server/index.js

    2. 您也可以尝试在命令前面添加npx,如下所示:

      npx cross-env NODE_ENV=production node server/index.js

      这应该可行,但我发现有时我会收到特定软件包的错误,据我所知这是 npx 的一个错误,但我没有时间研究它。值得注意的是,我确实在一个 nuxt js 应用程序中看到了这个错误,所以你也可以,但是我使用的是你没有的 nuxt cli。

    3. 第三个选项是您可以考虑使用 ebextensions 全局安装软件包。在我的工作中,我没有遇到过需要这样做的情况。

    【讨论】:

      猜你喜欢
      • 2015-09-18
      • 2020-03-24
      • 2014-12-16
      • 2018-06-11
      • 2020-06-23
      • 2015-06-20
      • 2016-04-20
      • 2014-03-06
      • 2018-09-06
      相关资源
      最近更新 更多