我已阅读EB Documentation以了解如何为我的应用设置外部依赖项。我的应用程序将安装在nodejs容器中,该容器自动执行npm install和npm start。所以要构建我使用的静态依赖项
"scripts": {
"postinstall": "bower install -F && gulp build",
"start": "node server.js",
"test": "NODE_ENV=test mocha server/test --recursive"
}
由于gulp构建错误导致其工作正常,如下所示
[12:03:22] Starting 'styles'...
{ [Error: spawn ENOENT: Missing the Sass executable. Please install and make available on your PATH.]
message: 'spawn ENOENT: Missing the Sass executable. Please install and make available on your PATH.',
showStack: false,
showProperties: true,
plugin: 'gulp-ruby-sass',
__safety: { toString: [Function] } }
[12:03:22] 'css' all files 0 B
所以我做了这个
packages:
rubygems:
sass: ''
并将文件放在 .ebextensions / 01config.config 中,但错误没有变化。尝试过做很多其他的事情,但最后做了以下作为我的最后一个想法
"postinstall": "bower install -F && gulp build && sh postgulp.sh",
在项目根
中创建 postgulp.sh 文件#!/bin/bash
pwd
ls
if hash sass 2>/dev/null; then
sass --update ./client/css:./public-debug/css --sourcemap=auto;
else
echo >&2 "I require sass but it's not installed. Continuing without sass.";
fi
仍然没有运气。即使我有rubygems依赖的sass,但它不在PATH中。为什么?何时执行ebextensions脚本而不是npm install和postinstall?为什么ebextensions中安装的某些东西只适用于那些脚本而不是npm?为什么剂量gulp-ruby-sass拿起sass?
答案 0 :(得分:0)
实例上可以有两个版本的ruby - 一个在/ usr / bin中,另一个在/ opt / elasticbeanstalk / lib / ruby中。
由于您说SAAS安装在后者中,因此您需要确保运行应用程序时路径上的ruby版本相同。
很可能节点试图在/ usr / bin中使用系统ruby,因此无法找到gem。