问题
After the CodeBuild is complete and I ssh into my environment, I can see that the server app's dependencies are installed and found in its node_modules. However in the client directory, there is no node_modules nor build directory. In the build logs, npm install --prefix client --production
appears to run fine.
My question is almost exactly like this one, except it is both the node_modules and the build folder.
Is there a problem with the buildspec file? Here it is (EDIT 4: updated)
version: 0.2
phases:
install:
commands:
# upgrade AWS CLI
- pip install --upgrade awscli
# install Node 12
- curl -sL https://deb.nodesource.com/setup_12.x | bash -
- apt install nodejs
pre_build:
commands:
# install server dependencies
- npm install
build:
commands:
# install client dependencies and build static files
- npm install --prefix client && npm run build --prefix client
post_build:
commands:
- ls -la
- ls client -la
artifacts:
files:
- '**/*'
EDIT 1: here's an example of what the codebuild logs show for the npm install --prefix client
:
Running command npm install --prefix client --production
> core-js@2.6.11 postinstall /codebuild/output/src133125934/src/client/node_modules/babel-runtime/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"
And for the npm run build -prefix client
:
[Container] 2020/07/02 00:24:06 Entering phase BUILD
[Container] 2020/07/02 00:24:06 Running command npm run build --prefix client
> client@0.1.0 build /codebuild/output/src133125934/src/client
> react-scripts build
Creating an optimized production build...
Compiled successfully.
File sizes after gzip:
144.95 KB build/static/js/2.d25271aa.chunk.js
23.22 KB build/static/css/main.fe6e5073.chunk.css
6.38 KB build/static/js/main.8e99a285.chunk.js
774 B build/static/js/runtime-main.f63e6028.js
EDIT 2: Using ls to see the directories after the build:
[Container] 2020/07/02 01:11:24 Entering phase POST_BUILD
[Container] 2020/07/02 01:11:24 Running command ls -la
total 136
drwxr-xr-x 12 root root 4096 Jul 2 01:09 .
drwxr-xr-x 3 root root 4096 Jul 2 01:09 ..
drwxr-xr-x 2 root root 4096 Jul 2 01:09 .ebextensions
-rw-rw-r-- 1 root root 130 Jul 2 01:08 .gitignore
-rw-rw-r-- 1 root root 16 Jul 2 01:08 .npmrc
-rw-rw-r-- 1 root root 34 Jul 2 01:08 README.md
-rw-rw-r-- 1 root root 1737 Jul 2 01:08 app.js
drwxr-xr-x 2 root root 4096 Jul 2 01:09 bin
-rw-rw-r-- 1 root root 566 Jul 2 01:08 buildspec.yml
drwxr-xr-x 6 root root 4096 Jul 2 01:10 client
drwxr-xr-x 2 root root 4096 Jul 2 01:09 config
drwxr-xr-x 2 root root 4096 Jul 2 01:09 graphql
drwxr-xr-x 2 root root 4096 Jul 2 01:09 models
drwxr-xr-x 197 root root 4096 Jul 2 01:10 node_modules
-rw-rw-r-- 1 root root 63888 Jul 2 01:08 package-lock.json
-rw-rw-r-- 1 root root 814 Jul 2 01:08 package.json
drwxr-xr-x 2 root root 4096 Jul 2 01:09 routes
drwxr-xr-x 2 root root 4096 Jul 2 01:09 services
drwxr-xr-x 2 root root 4096 Jul 2 01:09 views
[Container] 2020/07/02 01:11:24 Running command ls client -la
total 748
drwxr-xr-x 6 root root 4096 Jul 2 01:10 .
drwxr-xr-x 12 root root 4096 Jul 2 01:09 ..
drwxr-xr-x 3 root root 4096 Jul 2 01:11 build
drwxr-xr-x 1081 root root 36864 Jul 2 01:10 node_modules
-rw-rw-r-- 1 root root 699332 Jul 2 01:08 package-lock.json
-rw-rw-r-- 1 root root 1212 Jul 2 01:08 package.json
drwxr-xr-x 2 root root 4096 Jul 2 01:09 public
drwxr-xr-x 8 root root 4096 Jul 2 01:09 src
EDIT 3: After verifying the directories are made, I ssh into the beanstalk (ec2) instance to check if they have been deployed but this is what I get:
$ cd /var/app/current
$ ls
app.js
bin
buildspec.yml
client
config
graphql
models
node_modules
package.json
package-lock.json
Procfile
README.md
routes
services
views
$ cd client
$ ls
package.json
package-lock.json
public
src
The build and modules directory are not deployed into beanstalk.
回答1:
The problem is that the Deploy stage of the CodePipeline was taking in the Source output, not the Build output. Setting the Deploy input as the Build output fixed it!
来源:https://stackoverflow.com/questions/62685988/node-modules-directory-not-created-when-using-npm-install-during-aws-codebuild