如何在AWS CodePipeline部署期间安装子文件夹的依赖项?

时间:2016-11-15 10:08:48

标签: express github elastic-beanstalk aws-codepipeline

我试图在这里组织我的ExpressJS应用like the accepted answer。 (我不使用子域名,只使用子文件夹)目前我的文件夹结构类似于

  

root(expressjs项目有自己的package.json)
  --api(expressjs项目有自己的package.json)
  --panel(单页应用)
   - site(单页应用)
  package.json(根文件夹package.json)
  app.js(根文件夹app.js)

我在根级别的app.js就像

express()
.use(helmet())
.use(compression())
.use('/api', require('./api/app').app)
.use('/panel', express.static('./panel'))
.use('/', express.static('./site'))
.listen(port);

api项目的app.js以

结尾
exports.app = app;

我使用Github来存储我的项目和CodePipeline以部署到Elastic Beanstalk。但它不起作用,EB实例是红色的。这来自日志:( cors是api项目的依赖项)

Error: Cannot find module 'cors'
    at Function.Module._resolveFilename (module.js:469:15)
    at Function.Module._load (module.js:417:25)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/var/app/current/api/app.js:3:18)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
module.js:471
    throw err;

所以我的问题是,如何在CodePipeline部署期间安装子文件夹的依赖项?

1 个答案:

答案 0 :(得分:1)

通过添加:

解决
"scripts": {
  ...
  "postinstall": "cd api && npm install"
},

和带有

的.npmrc文件
  

unsafe-perm = true

在其中