我有一个非常简单的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文件夹吗?