dashboard windows 前端开发环境搭建

dashboard是kubernetes的云管平台UI界面,正常情况下,其是在linux下开发的,但是,有些特殊情况下,我们也可能希望在windows上搭建起dashboard的开发环境

这里我们将搭建的开发环境的结构如下:

这里写图片描述

windows上只运行前端,将后端和kubernetes放在服务器上,目前发现这样做的好处是,对windows的配置要求低,不用再在开发机上跑kubernetes和backend。坏处是不能在开发机上运行带 :prod的构建脚本,也就是生产环境构建脚本。总之,最好还是在linux上开发,特殊情况下,也可以迁移到windows下开发,迁移过程中,要对构建脚本做一些修改。

搭建后端环境

首先登录到你的ubuntu服务器,然后按照下面的教程在ubuntu上执行命令

安装项目环境

第一次运行,请先安装项目环境

启动docker服务

sudo service docker start

启动kubernetes集群

sudo gulp local-up-cluster

默认情况下,这将启动一个只能本地访问的kubernetes集群,如果你想要能够远程访问Kubernetss API Server,你可以使用:

curl https://raw.githubusercontent.com/fest-research/iot-addon/master/assets/hyperkube/hyperkube.sh | sudo sh

代替sudo gulp local-up-cluster

参考:the api server can’t access remotely

让后端允许所有的HTTP连接

默认情况下,后端是只允许本地http连接的,我们需要修改成允许所有的http连接

cd ~/dashboard
vi src/app/backend/dashboard.go

把:

 argInsecureBindAddress = pflag.IP("insecure-bind-address", net.IPv4(127, 0, 0, 1), "The IP address on which to serve the --port (set to 0.0.0.0 for all interfaces).")

改成:

argInsecureBindAddress = pflag.IP("insecure-bind-address", net.IPv4(0, 0, 0, 0), "The IP address on which to serve the --port (set to 0.0.0.0 for all interfaces).")

启动后端服务

sudo "PATH=$PATH" gulp serve

注意运行后不要关闭掉终端。

搭建后端环境可能会遇到的问题

运行gulp local-up-cluster一直waitting for a heapster...

解决办法:

打开build/conf.js文件,将:

 heapsterServerHost: gulpUtil.env.heapsterServerHost !== undefined ? gulpUtil.env.heapsterServerHost : '',

改成:

 heapsterServerHost: gulpUtil.env.heapsterServerHost !== undefined ? gulpUtil.env.heapsterServerHost : '127.0.0.1:8082',

找不到go路径

报错信息如下:

Error: Go is not on the path. Please pass the PATH variable when you run the gulp task with "PATH=$PATH" or install go if you have not yet.

解决办法:

首先,要确定你已经安装了go,运行:

go version

如果有返回go的版本,则安装成功了,否则,先安装go.

如果go确实已经安装,则可以在运行命令时传入PATH变量:

sudo "PATH=$PATH" <COMMAND>

搭建前端环境

接下来的步骤,将在windows上执行

安装实用工具

1、安装git

2、安装curl

这两个工具自行安装,比较简单。安装完之后:

1、点开右键,如果有“git bash”和“git gui”两个选项,git就安装成功了

2、打开命令行,运行:

curl www.baidu.com

如果有返回就是成功了

安装node

下载nodejs安装包,并安装

提示:如果你需要在多个node版本之间切换,可以使用nvm windows工具,切换了node版本之后要运行一次node rebuild

安装windows nodejs 开发环境

npm install -g windows-build-tools

这是微软提供的一键安装windows开发环境的工具,请确保这行命令运行成功,详情参考Configuring your Windows development environment

删除package.json中的postinstall脚本

postinstall.sh是npm install 的一个钩子脚本,它在npm install命令运行完之后执行,进行bower依赖的安装和go路径的设置,这里我们将手动执行。

打开package.json,将:

 "postinstall": "build/postinstall.sh"

删去

注意:提交代码的时候,不要将这个修改提交到代码仓库

安装前端依赖

在项目路劲下,运行:

npm  install
npm install -g bower
bower install

修改browserSync代理配置

打开build/serve.js文件,把:

let proxyMiddlewareOptions =url.parse(`http://localhost:${conf.backend.devServerPort}${apiRoute}`);

改成:

let proxyMiddlewareOptions =url.parse(`http://<YOU BACKEND SERVER IP>:${conf.backend.devServerPort}${apiRoute}`);

记得把<YOU BACKEND SERVER IP>替换成你后端服务器的ip

删除后端代码监控脚本

打开build/serve.js文件,把:

gulp.watch(path.join(conf.paths.backendSrc, '**/*.go'), ['spawn-backend']);

这句删掉

添加前端代码监控脚本

打开build/serve.js文件,在末尾添加:

/*** 只编译和监控前端代码*/
gulp.task('serve:frontend', ['watch'], serveDevelopmentMode);

运行起前端监控和开发服务器

gulp serve:forntend

搭建前端环境可能遇到的问题

npm 错误

(1)首先,必须以管理员身份运行npm install
(2)如果报“MSBUILD : error MSB4132: 无法识别工具版本“2.0”。可用的工具版本为 “4.0” ”错误,如下:

MSBUILD : error MSB4132: 无法识别工具版本“2.0”。可用的工具版本为 "4.0"。
gyp ERR! build error
gyp ERR! stack Error: `C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (C:\Program Files (x86)\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:276:23)
gyp ERR! stack     at emitTwo (events.js:106:13)
gyp ERR! stack     at ChildProcess.emit (events.js:191:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
gyp ERR! System Windows_NT 10.0.15063
gyp ERR! command "C:\\Program Files (x86)\\nodejs\\node.exe" "C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd E:\work\dashboard\node_modules\libxmljs-mt
gyp ERR! node -v v6.10.3
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok

这有可能是.net版本太高造成的,需要降低.net版本。

打开【控制面板】——【程序】——【启用或关闭windows功能】——勾选低版本的.net 

(3) 如果报错“MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”,如下:

MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装 .NET Framework 2.0 SDK;2) 安装 Microsoft Visual Stu
dio 2005;或 3) 如果将该组件安装到了其他位置,请将其位置添加到系统路径中。 [E:\work\dashboard\node_modules\libxmljs-mt\build\binding.sln]
gyp ERR! build error
gyp ERR! stack Error: `C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (C:\Program Files (x86)\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:276:23)
gyp ERR! stack     at emitTwo (events.js:106:13)
gyp ERR! stack     at ChildProcess.emit (events.js:191:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
gyp ERR! System Windows_NT 10.0.15063
gyp ERR! command "C:\\Program Files (x86)\\nodejs\\node.exe" "C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd E:\work\dashboard\node_modules\libxmljs-mt
gyp ERR! node -v v6.10.3
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok

这是开发环境的一些依赖没有安装,在windows下开发nodejs应用,需要做一些特别的准备,可以参考windows 开发环境搭建指南,或者,直接以管理员身份运行:

npm install -g windows-build-tools

一般来说,这都是安装node-sass时候出现的错误(node-gyp需要这些环境),你也可以到node-gyp项目上查看node-gyp安装指南

(4)如果报“npm ERR! Windows_NT 10.0.14393 npm ERR! argv ”错误,如下:

npm ERR! Windows_NT 10.0.14393 
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\YK\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js" "update" "-g" "ionic" 
npm ERR! node v6.10.2 
npm ERR! npm v3.10.10 

这有可能是版本node版本的问题,可以安装nvm-windows来切换node版本。

注意:nvm-windows安装路径不能有空格

(5)如果报Failed at the kubernetes-dashboard@1.6.1 postinstall script 'build/postinstall.sh错误,是因为postinstall.sh不能再windows下执行的问题

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.1: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN babel-loader@7.0.0 requires a peer of webpack@2 but none was installed.
npm WARN browserify-shim@2.0.10 requires a peer of browserify@>= 2.3.0 < 4 but none was installed.
npm ERR! Windows_NT 10.0.15063
npm ERR! argv "C:\\nodejs\\node.exe" "C:\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
npm ERR! node v6.10.3
npm ERR! npm  v3.10.10
npm ERR! code ELIFECYCLE
npm ERR! kubernetes-dashboard@1.6.1 postinstall: `build/postinstall.sh`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the kubernetes-dashboard@1.6.1 postinstall script 'build/postinstall.sh'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the kubernetes-dashboard package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     build/postinstall.sh
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs kubernetes-dashboard
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls kubernetes-dashboard
npm ERR! There is likely additional logging output above.npm ERR! Please include the following file with any support request:
npm ERR!     E:\work\dashboard\npm-debug.log

删除package.json的postinstall属性

gulp错误

(1)运行带:prod标签的任务,如gulp serve:prod报:
“`
Error: Input is not proper UTF-8, indicate encoding !
Bytes: 0xBC 0xAF 0xC8 0xBA

最新版本已经解决这这个问题,如果你用的是较旧版本(2017.7之前),你可以打开`build/i18n.js`,将:

fileExists(translationBundle)

改成:
```text
fileExists.sync(translationBundle)<div class="se-preview-section-delimiter"></div>

便可以

(2)运行gulp任务,如gulp scripts:prod时报

 Exception in thread "main" java.lang.RuntimeException: JSCompiler errors
E:/work/dashboard/.tmp/messages_for_extraction/about/about.html.js:2: ERROR - Parse error. Invalid escape sequence
var MSG_ABOUT\ABOUT_0 = goog.getMsg('General-Purpose Web UI for Kubernetes Clusters');<div class="se-preview-section-delimiter"></div>

报错信息是说有非法分隔符,指的就是var MSG_ABOUT\ABOUT_0这个变量名中的\,这是因为dashboard项目本来是在linux下开发的,linux下使用/分割路劲,而windows下使用\,所以dashboard中将路径转成字符串的代码基本上都会出错。

要修复这个问题,打开build/i18n.js文件,将:

let messageVarPrefix = filePath.toUpperCase().split('/').join('_').replace('.HTML', '');<div class="se-preview-section-delimiter"></div>

修改成:

let messageVarPrefix = filePath.toUpperCase().replace(/\\/g,"\/").split('/').join('_').replace('.HTML', '');<div class="se-preview-section-delimiter"></div>

(3)运行gulp任务,如果报

Error: Input is not proper UTF-8, indicate encoding !
Bytes: 0xE6 0x88 0x3F 0x3C
<div class="se-preview-section-delimiter"></div>

报错信息说是发现非法UTF-8字符,这个可能是dashboard开发者保存文件时没有使用UTF-8格式,解决办法就是恢复出错文件到以前版本.或者复制文件内容出来,删除非法格式文件,再把内容复制进新文件。

(3)运行gulp任务,如果报

 gulp-google-closure-compiler: deploy/helpsection/userhelp.html.js:5: ERROR - Parse error. Hex digit expected$templateCache.put('deploy\helpsection\userhelp.html', ' <div ng-transclude class="kd-user-help" layout-align="start center"> </div> ');<div class="se-preview-section-delimiter"></div>

报错信息说是发现非法16进制数据,这个问题非常蹊跷,也是windows平台和linux平台的路径分隔符不一致所致,是上面的\userhelp.html造成的,因为\u在js中代表后面接着的是16进制数,打开build/i18n.js,将:

file.moduleContent = `` +`import module from 'index_module';\n\n${file.messages}\n` +`module.run(['$templateCache', ($templateCache) => {\n` +`    $templateCache.put('${filePath}', '${content}');\n` +`}]);\n`;<div class="se-preview-section-delimiter"></div>

替换成:

file.moduleContent = `` +`import module from 'index_module';\n\n${file.messages}\n` +`module.run(['$templateCache', ($templateCache) => {\n` +`    $templateCache.put('${filePath.replace(/\\/g,"\\\\")}', '${content}');\n` +`}]);\n`;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429910.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Visual Studio2012打开时弹出“遇到异常:这可能是由某个扩展导致的”错误的解决办法...

Visual Studio2012打开时弹出“遇到异常&#xff1a;这可能是由某个扩展导致的”错误的解决办法&#xff1a; 具体问题如下&#xff1a; 分析原因&#xff1a;网上搜集了以下&#xff0c;出现异常的原因是安装了第三方控件&#xff0c;然后删除是没有删除干净&#xff0c;导致日…

跨域问题及CORS机制

跨域 跨域是指一个资源请求与其不在同一个域&#xff08;源&#xff09;的资源&#xff0c;不在同一个域&#xff08;源&#xff09;是指两个域的协议、域名或端口不同。 同源策略 出于安全考虑&#xff0c;浏览器制定了同源策略&#xff0c; 限制了某些跨域请求。同源策略是…

【LuoguP3038/[USACO11DEC]牧草种植Grass Planting】树链剖分+树状数组【树状数组的区间修改与区间查询】...

模拟题&#xff0c;可以用树链剖分线段树维护。 但是学了一个厉害的。。树状数组的区间修改与区间查询。。 分割线里面的是转载的&#xff1a; -------------------------------------------------------------------------------- [ 3 ] 上面都不是重点……重点是树状数组的区…

oracle .dbf文件过大_学习这篇Oracle数据库文件坏块损坏的恢复方法,拓展你的知识面...

一、Oracle数据库系统简介&#xff1a;ORACLE数据库系统是美国ORACLE公司&#xff08;甲骨文&#xff09;提供的以分布式数据库为核心的一组软件产品&#xff0c;是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如SilverStream就是基于数据库的一种中间…

threejs- z-fighting 问题

Z-Buffer 在threejs中&#xff0c;使用深度缓冲&#xff08;Z-Buffer&#xff09;来完成场景可见性计算&#xff0c;即确定场景哪部分可见&#xff0c;哪部分不可见。深度缓冲&#xff08;Z-Buffer&#xff09;是一个二维数组&#xff0c;其中的每一个元素对应屏幕上的一个像素…

bower overrides 配置

bower 是一个常用的包管理工具&#xff0c;用起来和npm很相似&#xff0c;但是两者又有一些区别&#xff0c;可以参考 —— What is the difference between Bower and npm。这里不说bower本身&#xff0c;而想说一下bower的overrides配置。 何谓override override 本身是覆盖…

windows下搭建Vagrant+Virtualbox环境

对于开发人员来说&#xff0c;Vagrant就是一个提供标准化开发环境的工具。通过Vagrant&#xff1a; 使每个开发人员电脑上的代码运行环境一致&#xff0c;再也不会出现“在我电脑上运行起来明明没有问题的”这样的开发环境不一致的问题。你可以使用Vagrant在windows下提供linu…

Jenkins主从节点配置

jenkins支持主从模式&#xff0c;这将会把构建任务分发到多个从节点去执行&#xff0c;这样就可以支撑起多个项目的大量构建任务&#xff0c;同时&#xff0c;你可以提供多种环境&#xff08;如&#xff1a;开发环境、生产环境&#xff09;来对同一个项目进行测试和构建。想要进…

HTML5 响应式图片

现在上网设备越来越多&#xff0c;各种设备的屏幕千差万别&#xff0c;如果只用一张图片去涵盖所有的设备&#xff0c;一是可能会造成某些设备上显示效果不佳&#xff0c;比如使用了一张低清晰度的图&#xff0c;而网页运行在一个高清大屏里&#xff1b;二是可能会浪费带宽&…

threejs坐标转换

屏幕坐标转three.js坐标 将屏幕坐标转变成threejs空间坐标&#xff1a; function transToThreeCoord(x,y){let mouse new THREE.Vector3();mouse.x (x/window.innerWidth)*2 -1;mouse.y -(y/window.innerHeight)*2 1;return mouse; }注意&#xff1a;在实际使用中&#x…

android socket 发送byte_如何正确地创建和销毁网络通讯程序中的Socket类的对象实例...

软件项目实训及课程设计指导——如何正确地创建和销毁软件应用系统中网络通讯中的Socket类的对象实例1、基于TCP/IP协议的Socket通信相关的基础知识(1)TCP/IP(Transmission Control Protocol传输控制协议/Internet Protocol网间协议)TCP/IP是目前Internet网络中的主要协议&…

H5 使用微信开放标签跳转小程序

微信开放标签是微信公众平台面向网页开发者提供的扩展标签集合&#xff0c;可以在网页上提供跳转小程序、打开 App 等能力。本文梳理使用微信开放标签跳转小程序的过程&#xff0c;以备日后查阅。 参考链接 1. 开放标签说明文档 准备已认证的服务号 开放标签只能绑定已认证…

【网络流24题】No.7 试题库问题 (最大流,二分图多重匹配)

【题意】 假设一个试题库中有 n 道试题。 每道试题都标明了所属类别。 同一道题可能有多个类别属性。现要从题库中抽取 m 道题组成试卷。并要求试卷包含指定类型的试题。 试设计一个满足要求的组卷算法。 输入文件示例input.txt3 153 3 42 1 21 31 31 31 33 1 2 32 2 32 1 31 2…

参数等效模型可以用于_干货分享电池单体产热特性及热模型标定分析(2)

上篇已讲解了电池单体产热特性及电池模型相关理论&#xff0c;相较之下等效电路模型无需对电池内部的电化学反应有着深入的分析&#xff0c;是通过电路来描述电池的开路电压、内阻等&#xff0c;以实现对电池外特性的表征。本篇将继续讨论此问题&#xff0c;用Matlab和Amesim模…

检测同心圆_(二)光线如何被眼睛检测到?

在第一篇文章中&#xff08;链接&#xff1a;&#xff08;一&#xff09;视觉系统的全貌&#xff09;&#xff0c;我们已经了解了视觉信息被大脑处理的全过程。现在&#xff0c;我们把目光投向一切的起点——眼睛。实际上&#xff0c;人们提起“视觉”&#xff0c;首先想到的几…

matlab计算斜方差_计算一幅图像的信噪比

本文摘自本人的毕业设计《数字图像滤波算法研究》2019, Chang’an University, Xi’an, China.本文适用于原始图像&#xff08;即不含噪声的图像&#xff09;存在的情况下。使用待计算SNR图像&#xff08;记为A&#xff09;与原始图像&#xff08;记为B&#xff09;做相减运算&…

【转载】linux进程及进程控制

Linux进程控制 程序是一组可执行的静态指令集&#xff0c;而进程(process)是一个执行中的程序实例。利用分时技术&#xff0c;在Linux操作系统上同时可以运行多个进程。分时技术的基本原理是把CPU的运行时间划分成一个个规定长度的时间片&#xff0c;让每个进程在一个时间片内运…

区分大小屏幕_VESA持续推动DisplayHDR认证计划,你的屏幕属于何种等级吗?

美国视频电子标准协会(VESA)今年可说是动作频频&#xff0c;年初先发布了专为OLED与其他自发光显示器所制订的DisplayHDR True Black高动态范围标准&#xff0c;下半年则更新DisplayHDR兼容测试规范至1.1版&#xff0c;并发布新的DisplayHDR 1400性能分级&#xff0c;至于年中所…

cordova 某个页面强制横屏_小白科普:从输入网址到最后浏览器呈现页面内容,中间发生了什么?...

老刘 1前言这篇文章是应网友之邀所写&#xff0c;主要描述一下我们访问网站时&#xff0c; 从输入网址到最后浏览器呈现内容&#xff0c;中间发生了什么。今天的文章主要专注于应用层&#xff0c;我拿了一个很简单的网络结构来讲。假定本机已经获取了IP地址&#xff0c;各种网络…

vue调用手机相机相册_今天才发现,点一下小米手机相册,能将照片一键制作成电影...

随着国产手机的发展&#xff0c;手机像素越来越高&#xff0c;里面的功能也越来越丰富&#xff0c;手机拍照成了不少人的日常&#xff0c;如果你很爱拍照&#xff0c;手机里有一大堆照片&#xff0c;那么教你用手机自带的相册功能&#xff0c;一键将照片制作成电影&#xff0c;…