2019年5月8日 星期三

處理Angular 裡 global 與 local 版本不一致


Angular 僅僅只是執行 ng --version,就出現 global 與 local 版本不一致的問題

Your global Angular CLI version (7.3.8) is greater than your local
version (7.3.2). The local Angular CLI version is used.




要解決這問題,有兩種方式:

一、將 local 的 angular/cli 升級到最新

npm install --save-dev @angular/cli@latest


ng --version
npm install --save-dev @angular/cli@latest
ng --version



二、將 local 的 angular/cli 版本升級到跟 Global 一致

我參考  https://www.npmjs.com/package/@angular/cli  裡面指定版本的與法

npm install --save-dev @angular/cli@7.3.8

執行完後真的可以讓我 local 的 @angular/cli 版本變成 7.3.8
重新再執行一次 ng --version 就不再出現版本差異的問題了



npm run build -- --prod 命令以返回碼 1 結束


在 VS2019 Preview 發佈 web 程式到 IIS Server 時,出現了下面錯誤:

npm run build -- --prod 命令以返回碼 1 結束
(npm run build — --prod exited with code 1 error)

參考了 https://stackoverflow.com/questions/49643536/the-command-npm-run-build-prod-exited-with-code-1-error 這篇文章,坦白說,我今天還真的有執行過 下面這行指令

npm install --save-dev @angular/cli@latest

於是我重複去檢視作者提出的三個步驟,我發現自己第一、第三,都有同樣的現象,經過修改後,專案的發佈才又得以正常執行。

1.For passing an argument to build command:

change 'npm run build -- --prod' to 'npm run build --prod' in the .csproj file

找到自己專案下面的 .csproj 檔案,用編輯器(記事本)開啟後,用關鍵字 npm run build 去找,就可以找到。

2.Open ClientApp folder and Update project angular-cli with this CMD command:

在 ClientApp 資料夾下面執行下面指令

npm install --save-dev @angular/cli@latest

3.Update visual studio NodeJS and npm from:

Tools > Options > Projects and Solutions > Web Package Management > External Web Tools

If NodeJS and npm aren't installed on your environment path Add NodeJS and npm folder to the top of the list else move $(path) to the top of the list


這裡我只發現自己缺了 nodejs 路徑,隨手就補上

2019年5月7日 星期二

Can't bind to 'ngModel' since it isn't a known property of 'input'


練習 Angular 時,使用雙向繫結 [(ngModel)],會出現下面錯誤:
Can't bind to 'ngModel' since it isn't a known property of 'input'

這時要檢查 app.module.ts ,看看是否 import 了 FormsModule




官網上提到,當使用到雙向繫結關鍵字  [(ngModel)] 卻沒引用 FormsModule ,就會出現錯誤:
Can't bind to 'ngModel' since it isn't a known property of 'input'.

2019年4月25日 星期四

Chrome 擺脫 catche 的糾纏

往往修改了 javascript 或 css,但瀏覽器卻因為 catche ,造成畫面沒有被更新。每次去清掉瀏覽器暫存,又顯得麻煩。

下面的方法,只要使用 F12,接著在 Network -> Disable cache 勾選起來,這樣就可以輕鬆立即看到最新的畫面結果了。


參考:How to make Chrome reload all JS and CSS file of a page?

2019年4月2日 星期二

處理 .bat 有中文路徑的問題

在 windows 中,如果想寫一個批次執行檔案 .bat,但指令中又包含中文字時,擔心是否會造成執行上的失敗?答案是:不一定。


一、如果你是用 windows 的記事本撰寫包含中文的 bat 檔,在沒有特別中文字的情況下,都可以執行。

二、如果你是用 NotePad++撰寫,預設情況下,有中文字都會出錯。

很奇怪對吧!

因為 Windows Command 視窗,預設開啟時使用的 Code Page 是 950 (Big-5),而上述第一種範例,因為記事本預設是用 ANSI 編碼來存檔,所以兩個人剛好是同一國的,可以互相溝通。但如果你在記事本輸入了包含 Unicode 字元時(例如:喆),如果照舊使用 ANSI編碼,就會造成字元遺失,否則,你就得轉成 Unicode 編碼來保存。只是這樣轉換後, Windows Command 就不跟你好了,你們就不再是同一國了,程式就無法執行下去。




同理,在第二種範例,因為使用 NodePad++編寫,預設是使用 UTF-8,所以一開始就與 Windows Command 格格不入。但他卻可以避免掉一些特別中文字的問題啊!於是,出現第三種聲音了,就是要求 Windwos Command 自己要改變,改變他的 Code Page,改成 UTF-8,這樣大家不就又站在同一個水平上,你我相容了嗎?


改變 Windows Command Code Page 的方法是: chcp 65001,只要將這一行放到 .bat 的第一行就可以了。