AWS - 通过 npm install 安装凉亭组件

Posted

技术标签:

【中文标题】AWS - 通过 npm install 安装凉亭组件【英文标题】:AWS - Installing bower components via npm install 【发布时间】:2014-09-07 13:59:25 【问题描述】:

我正在尝试使用 git aws.push 方法启动 node.js 服务器

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.sdlc.html

与此解决方案类似,我正在尝试运行“bower install”,尽管我的解决方案有点不同:

https://developer.ibm.com/answers/questions/16594/how-to-install-packages-on-nodejs/

我的实现:

“脚本”: “安装后”:“凉亭安装 -F” ,

这在本地运行良好 - npm install 也可以毫无问题地运行 bower install。当我部署到 aws 时,npm 运行良好 - 我知道我的服务器启动良好,因为我可以在日志中看到来自它的消息,但是当我尝试启动客户端时,没有任何 bower 组件到位。

我正在使用节点 v0.10.26,并且我确信我没有在本地计算机上全局安装 bower。我已经尝试过在 package.json 的依赖项部分中包含和不包含 bower。

有什么想法吗?并提前致谢。

package.json


  "name": "smf",
  "version": "0.1.0",
  "dependencies": 
    "aws-sdk": "~2.0.0-rc.14",
    "base64-js": "0.0.6",
    "bookshelf": "~0.6.10",
    "bower": "*",
    "change-case": "~2.1.1",
    "crypto-js": "~3.1.2-3",
    "geojson": "~0.1.5",
    "handlebars": "~2.0.0-alpha.2",
    "js-base64": "~2.1.5",
    "lodash": "~2.4.1",
    "mathjs": "~0.21.0",
    "minify": "~0.5.1",
    "moment": "~2.6.0",
    "newrelic": "~1.5.3",
    "node-cryptojs-aes": "~0.4.0",
    "node-highcharts": "0.0.2",
    "node-uuid": "~1.4.1",
    "passport": "~0.2.0",
    "passport-http": "~0.2.2",
    "passport-local": "~1.0.0",
    "password-hash": "~1.2.2",
    "pg": "~3.0.3",
    "restify": "~2.7.0",
    "should": "~3.3.1",
    "socket.io": "~0.9.16",
    "sqlite3": "~2.2.3",
    "util": "~0.10.3",
    "when": "~3.1.0"
  ,
  "devDependencies": 
    "grunt": "~0.4.2",
    "grunt-contrib-jshint": "^0.10.0",
    "grunt-mocha-test": "~0.9.0",
    "mocha-phantomjs": "~3.3.1"
  ,
  "scripts": 
    "postinstall": "bower install -F"
  ,
  "engines": 
    "node": ">=0.6"
  

日志文件

整个日志太长了,不过如果你需要的话我会把它贴到多个cmet中。下面是唯一提到凉亭的部分。

如果我尝试访问该站点,我会得到指示缺少 Bower 组件的访问日志。

似乎没有执行任何 bower install。


/var/log/directory-hooks-executor.log

underscore.string@2.3.3 /tmp/deployment/application/node_modules/bower/node_modules/update-notifier/node_modules/configstore/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string esprima@1.0.4 /tmp/deployment/application/node_modules/bower/node_modules/update-notifier/node_modules/configstore/node_modules/js-yaml/node_modules/esprima object-assign@0.3.1 /tmp/deployment/application/node_modules/bower/node_modules/update-notifier/node_modules/configstore/node_modules/object-assign uuid@1.4.1 /tmp/deployment/application/node_modules/bower/node_modules/update-notifier/node_modules/configstore/node_modules/uuid 最新版本@0.2.0 /tmp/deployment/application/node_modules/bower/node_modules/update-notifier/node_modules/latest-version package-json@0.2.0 /tmp/deployment/application/node_modules/bower/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json got@0.3.0 /tmp/deployment/application/node_modules/bower/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got object-assign@0.3.1 /tmp/deployment/application/node_modules/bower/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/object-assign registry-url@0.1.1 /tmp/deployment/application/node_modules/bower/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url npmconf@2.0.2 /tmp/deployment/application/node_modules/bower/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/npmconf config-chain@1.1.8 /tmp/deployment/application/node_modules/bower/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/npmconf/node_modules/config-链 proto-list@1.2.3 /tmp/deployment/application/node_modules/bower/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/npmconf/node_modules/config-链/node_modules/proto-list ini@1.2.1 /tmp/deployment/application/node_modules/bower/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/npmconf/node_modules/ini 继承@2.0.1 /tmp/deployment/application/node_modules/bower/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/npmconf/node_modules/inherits mkdirp@0.3.5 /tmp/deployment/application/node_modules/bower/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/npmconf/node_modules/mkdirp once@1.3.0 /tmp/deployment/application/node_modules/bower/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/npmconf/node_modules/once uid-number@0.0.5 /tmp/deployment/application/node_modules/bower/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/npmconf/node_modules/uid-数字 semver-diff@0.1.0 /tmp/deployment/application/node_modules/bower/node_modules/update-notifier/node_modules/semver-diff string-length@0.1.2 /tmp/deployment/application/node_modules/bower/node_modules/update-notifier/node_modules/string-length strip-ansi@0.2.2 /tmp/deployment/application/node_modules/bower/node_modules/update-notifier/node_modules/string-length/node_modules/strip-ansi ansi-regex@0.1.0 /tmp/deployment/application/node_modules/bower/node_modules/update-notifier/node_modules/string-length/node_modules/strip-ansi/node_modules/ansi-regex which@1.0.5 /tmp/deployment/application/node_modules/bower/node_modules/which

【问题讨论】:

您能否尝试按照此处的说明拍摄您的日志快照:docs.aws.amazon.com/elasticbeanstalk/latest/dg/…?您也可以发布 package.json 的确切内容。您问题中的内容当前在"scripts": "postinstall": "bower install -F" , 行的末尾显示一个逗号,这可能会导致问题。只是想确定它是否是一个错字。 我已添加此信息 - 但确实没有新信息... 这里有同样的问题... 【参考方案1】:

bower 可能没有全局安装(如果是,请告诉我如何在弹性 beantalk 上执行此操作:D)。 相反,您应该指向 node_modules 文件夹中的 bower 箱(这是我们过去的做法)。我们已经放弃了那个解决方案(考虑它以 500 个实例的规模旋转......)并且正在将 bower_components 检查到 repo 中。

"scripts": 
  "postinstall": "node_modules/bower/bin/bower install -F"
,

【讨论】:

这对我来说根本不运行。 Bower 包从不显示,我收到 404 错误。 还没有。不过,我仍在调查它。我尝试将 bower install 作为 container_commands 脚本运行,但也出现了错误,因为节点未链接到 PATH 环境变量中。 ***.com/a/19011144/859747 展示了如何解决这个问题,但也需要链接 git。我不确定亚马逊为什么不只运行 postinstall。它应该在 npm install 运行时运行。 我也用 "postinstall": "node ./node_modules/bower/bin/bower install -F" 测试过,但没有成功:( 和 "postinstall": "/opt/elasticbeanstalk/node-install/node-v0.10.31-linux-x64/bin/node ./node_modules/bower/bin/bower install -F" 不要也不行…… :( "postinstall" 对我来说工作正常...我在 .bowerrc "directory":"client/bower_components" @BKH 中给出了另一个路径,这可能对你有帮助。创建 .bowerrc文件并添加所需的目录路径。【参考方案2】:

将 .config 文件添加到 .ebextensions 目录以安装 Bower 组件会有所帮助。不幸的是,node 和 npm 默认不会添加到路径中,因此您需要找到最新的节点实例并创建符号链接。我真的不喜欢以 root 身份安装凉亭组件,但这会起作用:

commands:
  01_get_sudo:
      command: echo Defaults:root \!requiretty >> /etc/sudoers
  02_node_path:
    command: "sudo ln -sf `ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin/node /usr/bin/node"
  03_npm_path:
    command: "sudo ln -sf `ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin/npm /usr/bin/npm"

container_commands:
  01_bower_install:
    command: "sudo ./node_modules/bower/bin/bower install --allow-root"

【讨论】:

【参考方案3】:

使用$NODE_HOME,例如

container_commands:
  01_bower_install:
    command: "export PATH=$PATH; $NODE_HOME/bin/node ./node_modules/bower/bin/bower install --allow-root &>> /tmp/01_bower_install.log"

head -1 不一定会使用最新版本的nodenpm

例如...

$ ls -td /opt/elasticbeanstalk/node-install/node-* | head -1
/opt/elasticbeanstalk/node-install/node-v4.3.0-linux-x64

ls 表明 v5.6.0 实际上是最新的:

$ ls -td /opt/elasticbeanstalk/node-install/node-*
/opt/elasticbeanstalk/node-install/node-v4.3.0-linux-x64
/opt/elasticbeanstalk/node-install/node-v0.10.42-linux-x64
/opt/elasticbeanstalk/node-install/node-v5.6.0-linux-x64
/opt/elasticbeanstalk/node-install/node-v0.8.28-linux-x64
/opt/elasticbeanstalk/node-install/node-v0.12.10-linux-x64

即使有,也可能不是你想要的。

您可以通过排序来解决这个问题,但您可能仍希望使用与环境相同的节点版本,可以通过$NODE_HOME 访问。

【讨论】:

以上是关于AWS - 通过 npm install 安装凉亭组件的主要内容,如果未能解决你的问题,请参考以下文章

npm install 给出错误:EPERM,取消链接

如何替换 npm 中的凉亭包 jsTimezoneDetect

AWS Beanstalk 通过 NPM 安装私有 Github 模块导致身份验证问题

试图通过凉亭安装聚合物纤维

无法使用凉亭安装软件包

AWS Elastic Beanstalk |错误:无法运行 npm 安装。快照日志以获取更多详细信息