angular2+ionic2安装中遇到的问题及解决

最近接到任务是需要用angular2+ionic2开发的项目,粗粗的看了一下教程,发现和之前用的angular cli的用法相似,想来也是简单。待到实际在自己动手开始配置,才发现自己的前端开发的基础是在是有些浅,短短一个安装的过程就让我四处碰壁。安装过程所使用的命令:
出于稳定,先安装cnpm(有npm的国内镜像包,不会出现被墙而报错的问题);

npm install -g cnpm

使用cnpm代替npm,再安装cordova和ionic

cnpm install -g ionic@2.* cordova@4.2.0

  1. 先谈第一个问题,对npm的理解太浅,使用npm安装ionic链接下载时间过程而导致无法成功下载,使用cnpm下载则会十分的流畅,因为不清楚cnpm和npm的区别,这导致在之后查找问题的过程中给自己多加了不少疑问难题。npm与cnpm的区别只在于安装包的来源不同,而最后安装的路径其实是一样的,cnpm实际上也算是npm。
  2. 在我没缕清第一个问题我就继续往后走了,于是很快就遇到了第二个问题,使用ionic serve这条命令导致运行报错,错误信息部分为:

'ionic-app-scripts' ▒▒▒▒▒ڲ▒▒▒▒ⲿ▒▒▒Ҳ▒▒▒ǿ▒▒▒▒еij▒▒▒
▒▒▒▒▒▒▒▒▒ļ▒▒▒
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! ionic-jetsen@ ionic:serve: ionic-app-scripts serve "--v2" "--address" "0.0.0.0" "--port" "8100" "--livereload-port" "35729"
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the ionic-jetsen@ ionic:serve script 'ionic-app-scripts serve "--v2" "--address" "0.0.0.0" "--port" "8100" "--livereload-port" "35729"'.
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 ionic-jetsen package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! ionic-app-scripts serve "--v2" "--address" "0.0.0.0" "--port" "8100" "--livereload-port" "35729"
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs ionic-jetsen
npm ERR! Or if that isn't available, you can get their info via:
npm ERR! npm owner ls ionic-jetsen
npm ERR! There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\Administrator\AppData\Roaming\npm-cache_logs\2017-04-08T07_03_47_978Z-debug.log
There was an error serving your Ionic application: There was an error with the spawned command: serve

这下就然我很摸不清问题所在了,看网上的教程都没见遇到这样的问题的。于是我就开始找原因,开始因为第一个问题没弄清楚,感觉是因为我用cnpm的命令而没有用npm的原因,想着正本清源,等一番补阙挂漏后发现对结果并没有影响,让我更加罔知所措了。但这也不能束手待毙,于是我就重新构建了一个ionic的项目,发现也报了这个错误,这就排除了是安装cordova出的错误,几番查找资料下来发现新建项目报错的原因有两个:

  • 第一个报警的本质问题应该就是地址被墙了,github.com ping不通导致,两个方案最后都使得连接超时的错误被解决;但是这又会导致第二个错误无法绕过去
  • 这里两步其实是在安装项目依赖,你会看到期间有node_module文件夹被创建出来,并在里面不断生成依赖库,但是却无法彻底安装完成,从而阻塞了其余项目文件的创建,导致安装失败

总结起来就是ionic自带的创建命令使用的是npm的命令,使得有些依赖包无法顺利下载下来。使用国内镜像
的cnpm的命令就能解决问题。这时的解决方法是:
创建项目的时候,先行屏蔽掉依赖的安装:

ionic start myApp --skip-npm

等到项目创建完毕后,进入项目自动创建的myAPP文件夹,再使用npm国内镜像去安装依赖:

cnpm install --save

然后使用ionic serce命令就能运行起来了。
触类旁通,我就试着在我现有的项目下使用

cnpm install --save

发现使用这个命令果然加载到了几个依赖包,然后再运行ionic serce命令于是也能正常启动了。

问题:

1、 解决解决angular Js中出现unsafe:data:;base64,的问题:
问题详情(console/network请求报错):

unsafe:data:;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQ...

原因:Angular2 抛出此错误,是因为Angular2 有自身的一套安全过滤系统,src 属性是资源 URL 安全上下文,因为不可信源可以在用户不知情的情况下执行某些不安全的操作。但如果我们确认资源的 URL 是安全的,我们可以使用 Angular 2 中提供的 DomSanitizer 服务告知 Angular2 该 URL 地址是安全的。
例如,需要动态绑定一个url,angular2会诸如使用:unsafe:xxx的手段,自动把它无害化。但有时候它会导致我们得不到预期的运行结果,当我们使用图片时,直接将其对象赋值给img标签的src通常会由于该安全机制而报错。此时就有必要使用angular2提供的api,即DomSanitizer信任它。

操作:
注入DomSanitizer

import { DomSanitizer } from '@angular/platform-browser'

在construct函数中声明

private sanitizer : DomSanitizer

安全包装url

// 根据需要调用下面的方法之一
html = sanitizer.bypassSecurityTrustHtml(html)
script = sanitizer.bypassSecurityTrustScript(script)
style = sanitizer.bypassSecurityTrustStyle(style)
url = sanitizer.bypassSecurityTrustUrl(url)
url = sanitizer.bypassSecurityTrustResourceUrl(url)

2、 使用angular2进行文件上传:
使用接口详情:

data: [{
   "title":"IMG_8888_00x",
   "files": ["3.jpg"],
   "subject": "生命科学"
}]

使用的html:


<img [src]="headers">
<button><span>上传图片</span><input type="file" id="uploadVideo" (change)="changeFile($event)"/> </button>  
<button (click)="goToSave()">保存</button>

使用的函数:

// 上传图片
 changeFile(event:any){
   let reader = new FileReader();
   let $this:any = this;
   let file:File = event.target.files[0];
   if(file==null){
     return;
   }
   //预览图片
   reader.readAsDataURL(file);
   reader.onload = function(e){
     $this.headers=this.result;
   }
   this.infos.photo=file.name;
   this.files = [];
   this.files.push(file);
 }
//使用接口保存图片
goToSave(){
   let url_data = this.infos;
   let _this = this;
   _this.url = localStorage.getItem("serveUrl")+"/user/"+_this.user_uuid+"?ticket="+_this.ticket;
   this.mypages.postFile(_this.url,JSON.stringify(url_data),_this.files).then(function(v:any) {
       console.log(v);
   })
 }

核心postFile函数:

postFile(url,data,files){
    let headers = new Headers();
    let body:any;
    var formData = new FormData();
    formData.append('data', data);
    for (var i = 0; i < files.length;i++) {
      formData.append(files[i].name, files[i]);
    }
    body =  formData;
    let options = new RequestOptions({ headers: headers });
    return new Promise(resolve => {
          this.api.put(url, body, options).share().subscribe(res => {
            console.log("putDataOK");
            this.data = res.json();
            resolve(this.data);
          });
      });
  }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • Ionic是一个基于Angular2的开发手机web app的框架,它包含了一整套手机端的样式组件,和一系列的功能...
    王兆龙阅读 1,164评论 1 1
  • 关于女人的才华,真的可以说很多。 我见过拍照的,画画的,写字的,搞设计的,她们有很多技能,但这不是真正的才华。 一...
    我开始写影评了阅读 220评论 0 0
  • 十五年前我来到人间12.03是我的生日 三十八年前她来到人间07.14是她的生日 十五年;十五个生日;十五...
    余山先生阅读 175评论 0 4