在npm install中没有Elastic Beanstalk依赖项?

时间:2015-04-27 12:14:52

标签: node.js sass gruntjs gulp elastic-beanstalk

我已阅读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?

1 个答案:

答案 0 :(得分:0)

实例上可以有两个版本的ruby - 一个在/ usr / bin中,另一个在/ opt / elasticbeanstalk / lib / ruby​​中。

由于您说SAAS安装在后者中,因此您需要确保运行应用程序时路径上的ruby版本相同。

很可能节点试图在/ usr / bin中使用系统ruby,因此无法找到gem。