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 挂钩中解决了这个问题。
我正在尝试在 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 挂钩中解决了这个问题。