我试图在这里组织我的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部署期间安装子文件夹的依赖项?
答案 0 :(得分:1)
通过添加:
解决"scripts": {
...
"postinstall": "cd api && npm install"
},
和带有
的.npmrc文件unsafe-perm = true
在其中