我试图将ember-cli应用程序部署到Azure网站。 部署到azure时,运行部署脚本,执行以下操作:
- npm install bower
- npm install ember-cli
- bower install
- npm install
- ember build
嗯,这一切似乎进展顺利,直到它达到ember build
步骤。我收到一个错误:
this._handle.open(options.fd)
Error: EINVAL, Invalid argument
at new Socket (net.js:156:18)
at process.stdin (node.js:664:19)
at ..... ember-cli\bin\ember:28:25
搜索我发现此链接与Grunt https://github.com/TryGhost/Ghost/pull/3608存在同样的问题 那么,我如何在Ember CLI中禁用stdin?我可以采取任何方式,或任何解决方法,以便我可以部署应用程序?
我正在尝试在网络服务器上制作构建过程,并且不知道这对Azure不起作用。有没有人有Azure的经验? 非常感谢你!
更新
请下面由Felix Rieseberg或Justin Niessner发布的两种方法之一。谢谢你们的支持和调查!
答案 0 :(得分:6)
我实际上也找到了一种方法 - 由于我是微软的开源人员,我只是构建了一个小型的npm模块来处理所有事情。如果你想要一个很长的解释,check this out - 如果你只想要tl; dr版本:
$ npm install ember-cli-azure-deploy --save-dev -g
$ azure-deploy init
答案 1 :(得分:4)
我正在尝试自己的最后步骤。我不确定您是如何设置部署的,但我希望我在dist
文件夹中构建%DEPLOYMENT_SOURCE%
文件夹,然后仅将部署文件作为部署的一部分进行复制。
在看到你发布的链接之前,我一直在努力解决你遇到的同样问题。这让我有了一个疯狂的想法,即使用grunt
和grunt-shell
来调用ember build
而不是直接从我的deploy.cmd调用它。
我的Gruntfile.js非常简单:
module.exports = function(grunt) {
require('load-grunt-tasks')(grunt);
grunt.initConfig({
shell: {
build: {
command: 'ember build -prod',
options: {
stdout: true,
stdin: false
}
},
test: {
command: 'ember test',
options: {
stdout: true,
stdin: false
}
}
}
});
grunt.registerTask('default', ['shell:build'])
}
之后,我有一个dist
文件夹,然后可以通过Kudu Sync命令复制到wwwroot
。如果你需要看到其他任何东西,请告诉我,我会更新我的答案。
<强>更新强>
我终于有机会清理并添加一些检查以确保我没有安装已安装的东西。您可以在以下位置查看我的整个deploy.sh文件:
https://github.com/CrshOverride/EmberTodo/blob/master/deploy.sh