示例使用 ngserve 的 broswerTarget 选项?

Way*_*kie 6 angular-cli angular

我想在构建 Angular 应用程序时自动打开 Chrome。但是,我无法使用 -o,因为我的默认浏览器是 Safari(我不想更改默认浏览器)。

似乎 --browserTarget 就是我所需要的,但是当我运行类似的命令时:

ng serve --browserTarget=Chrome
Run Code Online (Sandbox Code Playgroud)

CLI 抛出错误:

Schema validation failed with the following errors:
    Data path ".browserTarget" should match patter ".+:.+(:.+)?"
Run Code Online (Sandbox Code Playgroud)

我似乎找不到任何有关如何使用此选项来纠正该问题的文档或示例。

预先感谢,韦恩

Jim*_*987 0

我搜索了几个小时来寻找这个问题的答案,除了你的问题之外没有找到太多。我是一个 Angular 菜鸟,没有资格回答,但这个问题到目前为止已经被浏览了 650 次,而且还没有其他人提供答案。所以,至少当我忘记它并在一年后再次回来寻找解决方案时,我会找到以下比没有更好的答案。

看来 --browserTarget 标志是一个转移注意力的东西。我实现的解决方案是使用此处的 open-cli 软件包: open-cli --
安装如下:

> npm install --global open-cli
Run Code Online (Sandbox Code Playgroud)

然后,在 package.json 文件的“scripts”: {...} 部分(在我的 Angular 项目的根文件夹中),我替换了这一行:

"start": "ng serve",
Run Code Online (Sandbox Code Playgroud)

用这一行:

"start": "open-cli http://localhost:4200 -- 'chrome' && ng serve",
Run Code Online (Sandbox Code Playgroud)

请注意,以上内容适用于 Windows 计算机。这里“chrome”的使用取决于平台。在 Linux 上使用“google-chrome”,在 Mac 上使用“google chrome”,在 Windows 上使用“chrome”。

然后,我从命令行发出以下命令来启动服务器并打开我的(非默认)Chrome 浏览器:

> npm start
Run Code Online (Sandbox Code Playgroud)

这种方法有一些缺点,我希望人们能够在评论(或另一个答案)中温和地指出并提出改进建议:

  1. 我已经对端口进行了硬编码,它可以/肯定应该从其他地方动态地提取。
  2. 浏览器在页面编译完成之前打开,因此以“连接拒绝错误”开始,这可能会导致混乱。只要耐心等待,一旦构建完成并且 Angular 服务器启动,浏览器就会自动刷新,但这需要几秒钟的时间。