NUXT SSR aws管道构建问题



我有一个非常简单的aws代码管道,可以在电子豆茎上为SSR构建Nuxt。

version: 0.2
phases:
install:
runtime-versions:
nodejs: 14
pre_build:
commands:
- yarn
build:
commands:
- yarn build --max-old-space-size=2048
artifacts:
base-directory: ./
files:
- '**/*'
cache:
paths:

它在Elastic Beanstalk上失败,出现以下错误:

web: > nuxt start
web: internal/modules/cjs/loader.js:905
web: throw err;
web: ^
web: Error: Cannot find module '../package.json'
web: Require stack:
web: - /var/app/current/node_modules/.bin/nuxt
web: at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15)
web: at Function.Module._load (internal/modules/cjs/loader.js:746:27)
web: at Module.require (internal/modules/cjs/loader.js:974:19)
web: at require (internal/modules/cjs/helpers.js:93:18)
web: at Object.<anonymous> (/var/app/current/node_modules/.bin/nuxt:5:16)
web: at Module._compile (internal/modules/cjs/loader.js:1085:14)
web: at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
web: at Module.load (internal/modules/cjs/loader.js:950:32)
web: at Function.Module._load (internal/modules/cjs/loader.js:790:12)
web: at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12) {
web: code: 'MODULE_NOT_FOUND',
web: requireStack: [ '/var/app/current/node_modules/.bin/nuxt' ]
web: }

如果我把应用程序下载到本地,我也会遇到同样的问题。但是如果我重新运行

纱线安装

它开始工作。

看起来是这行node_modules/.bin/nuxt

const suffix = require('../package.json')

因为它在.bin文件夹中,没有任何package.json,这不应该是怎么回事。

因此,我试图弄清楚aws管道和本地管道上的纱线安装有何不同。管道和本地1.22.1 上的相同纱线版本

如果您将Nuxt应用程序从一个服务器/位置移动到另一个位置,会发生什么故障?我可以在本地构建它,并将其上传到Elastic Beanstalk,这很有效。

任何建议都会有很大帮助。

您需要在yarn build之前运行yarn install,或者只运行

yarn install && yarn build --max-old-space-size=2048

你可能也可以让你的prebuild舞台做yarn install,但我从来没有尝试过。

我最近写了一篇关于在elasticBeanstalk上部署带有SSR的nuxt应用程序的教程,您可以查看最后一部分,其中包括代码管道buildspec.yml文件和必要的工件
它使用npm,但您可以很容易地将其更改为使用yarn

version: 0.2
phases:
build:
commands:
- npm install && npm run build
artifacts:
files:
- "package.json"
- "nuxt.config.js"
- ".nuxt/**/*"
- "static/**/*"
- ".platform/**/*"
- ".ebextensions/**/*"

我更新了两件事,它开始工作了。

在我的构建规范中,我从工件中删除了以下内容:部分

base-directory: ./

在我的package.json文件中,我将启动命令更新为

"start": "node_modules/nuxt/bin/nuxt.js start",

注意,我找到了起始位置为的教程

"start": "node_modules/.bin/nuxt"

这对我不起作用。我希望Nuxt文档能更清楚地了解在CI/CD环境中运行SSR的最佳实践。就像在构建之后,您还需要node_modules文件夹吗?

最新更新