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
不一定会使用最新版本的node
和npm
。
例如...
$ 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 中的凉亭包 jsTimezoneDetect