NodeJS 应用程序部署 - NPM/Gulp

NodeJS App Deployment - NPM/Gulp

我正在尝试在 AWS CodeDeploy 上部署一个 nodeJS 应用程序,但 gulp 依赖项和 bash 文件中的 运行 npm install/start 存在问题。

我有一个标准的应用文件夹结构,package.json 在项目根目录等

Bash 文件 (bin/npm_install.sh)

cd /opt/deployments/app-backend
npm install

NPM 脚本定义

"scripts": {
  "postinstall": "gulp minify-sdk && gulp setup-auto",
  "start": "gulp",
  "test": "gulp test"
}

当运行bin/npm_install.sh

时出错
[stdout]
[stdout]> app@0.0.1 start /opt/deployments/app-backend
[stdout]> gulp
[stdout]
[stderr]
[stderr]module.js:340
[stderr]    throw err;
[stderr]          ^
[stderr]Error: Cannot find module 'pretty-hrtime'
[stderr]    at Function.Module._resolveFilename (module.js:338:15)
[stderr]    at Function.Module._load (module.js:280:25)
[stderr]    at Module.require (module.js:364:17)
[stderr]    at require (module.js:380:17)
[stderr]    at Object.<anonymous> (/opt/deployments/app-backend/node_modules/.bin/gulp:5:18)
[stderr]    at Module._compile (module.js:456:26)
[stderr]    at Object.Module._extensions..js (module.js:474:10)
[stderr]    at Module.load (module.js:356:32)
[stderr]    at Function.Module._load (module.js:312:12)
[stderr]    at Function.Module.runMain (module.js:497:10)
[stderr]npm ERR! weird error 8
[stderr]npm WARN This failure might be due to the use of legacy binary "node"
[stderr]npm WARN For further explanations, please read
[stderr]/usr/share/doc/nodejs/README.Debian
[stderr] 
[stderr]npm ERR! not ok code 0

注意:运行 npm install 在项目根文件夹中运行良好。

有什么建议吗?这是在 codedeploy 完成代码部署后启动应用程序的最佳方式吗?

您可以使用 'AfterInstall' 生命周期事件来安装您的模块并使用 'ApplicationStart' 生命周期事件来启动应用程序。手动 运行 npm_install.sh 是否成功?

虽然我还没有找到对此的解释,但问题是当 node_modules 文件夹从 TravisCI/CodeShip 返回时,node_modules/.bin/* 文件没有符号链接,因此这些模块无法解析它们的内部依赖关系。

我最终通过 运行 npm install gulp 在重新创建符号链接的 after_install 挂钩中解决了这个问题。