顯示具有 exception 標籤的文章。 顯示所有文章
顯示具有 exception 標籤的文章。 顯示所有文章

2024年1月16日 星期二

node 多版本問題

透過nvm 可以在主機上安裝多版本nodejs

任意切換

最近在把原本系統node16升級到node 20

一直遇到錯誤顯示 module的版本錯誤

但透過node --version檢查 版本已經20對了

還是報錯

最後發現當使用sudo node --version看到的版本卻是16

才發現若用sudo 執行會是執行到16的版本

這問題來自於

早期系統安裝node 16時

有把/usr/bin/node link到 nvm內16的版本

造成版本不一

2023年6月8日 星期四

AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUE

 裝好pip3後 當需要透過pip安裝模組時

需先安裝pyOpenSSL


pip install pip --upgrade

pip install pyopenssl --upgrade

再安裝其他 就不會有這錯誤

2022年12月15日 星期四

nginx upstream cookie不會產生問題

 今天發生一個問題

在nodejs以 express-session建立session與cookie

原本運作都很正常

但透過nginx proxy後發現set-cookie都失效了

client browser 不會產生cookie存放session id

導致之後的使用都有問題

查了一下才發現

nginx內設定了

proxy_hide_header Set-Cookie;

拿掉就解決了

2022年9月21日 星期三

jquery3 .andSelf()不支援問題

在jquey ui上使用到 andSelf()功能

在jquery3.x已經被廢除,解法是以addBack()取代

2022年8月16日 星期二

nignx alias 403Forbiden問題

今天在建立新主機遇到狀況

在nginx 以alias設定static檔案

ex:

location /test {

  alias ~/myweb;

}


但一直遇到403Forbiden

檢查檔案權限都沒有問題

解決方式是

將nignx啟動使用者設定為

檔案的擁有者 即可

也就是修改

nginx.conf 

user www-data

改成

user xxx使用者帳號

2022年7月14日 星期四

cors錯誤The 'Access-Control-Allow-Origin' header contains multiple values , *', but only one is allowed.

當在nodejs server 已經加入cors設定

就不能在nginx 設定

add_header Access-Control-Allow-Origin *;

add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';

否則就會有重複設定的錯誤

2021年11月10日 星期三

mongo-express錯誤listDatabases requires authentication

原本mongo+mongo-express運作相當穩定

後來掛掉 透過docker logs察看到一個錯誤

MongoError: command listDatabases requires authentication

需要驗證

在docker-compose.yml上加上設定ME_CONFIG_MONGODB_URL解決

ex: docker-compose.yml

mongo-express:

  image: mongo-express:latest

  container_name: mongo_admin

  restart: always

  ports:

    - 8081:8081

  environment:

    ME_CONFIG_MONGODB_ADMINUSERNAME: 帳號

    ME_CONFIG_MONGODB_ADMINPASSWORD: 設定密碼

    ME_CONFIG_SITE_BASEURL: /mongo

    ME_CONFIG_MONGODB_URL: "mongodb://帳號:密碼@mongo—container名稱:27017/"


2021年10月6日 星期三

git 發生 server certificate verification failed. CAfile: none CRLfile: none 錯誤

當由私人git repo下載安裝

可能出現錯誤

server certificate verification failed. CAfile: none CRLfile: none

造成無法安裝

可以透過環境設定

export GIT_SSL_NO_VERIFY=1

跳過檢查就可安裝 

2021年4月19日 星期一

2021年4月8日 星期四

Git error - Fatal: Not a git repository錯誤處理

在window上發生了幾次莫名的git忽然消失問題

察看目錄下.git目錄都還在

但系統確不認得這是一個git 目錄

處理的方式

1.檢查.git/config檔案是否變成亂碼

2.刪除 git/HEAD

3.git init

應該就回復正常了

2020年10月14日 星期三

Error response from daemon: cannot stop container 無法停止docker container


當使用

sudo docker container stop xxx 

卻發生 無法停止的錯誤

Error response from daemon: cannot stop container

可以透過

sudo aa-remove-unknown

之後就可以stop container

2020年10月12日 星期一

舊版本require-dir錯誤

在舊版本的gulp引用的require-dir(0.1.0)過舊

發生錯誤

TypeError: require.extensions.hasOwnProperty is not a function

以

if (!Object.prototype.hasOwnProperty.call(require.extensions, ext))

取代

if (!require.extensions.hasOwnProperty(ext))

即可正常運作

2020年8月8日 星期六

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use

原本將nginx以docker部署

調整改成用ansible部署到主機上

安裝啟動一直發生錯誤

/etc/nginx目錄下的檔案不齊全

還有在/run/下找不到nginx.pid

報錯為

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use

這是個低級錯誤

就是80 port已經被佔用

乾淨移除nginx的部分

可以執行以下指令

sudo apt-get remove nginx nginx-common

sudo apt-get purge nginx nginx-common

sudo apt-get autoremove


查看是哪個程序佔用了80 port

netstat -anp |grep 80


查看才發現原本被停用 docker container nginx 在開機時被啟用

把80port佔住了 才發生在主機上無法安裝nginx的錯誤

停掉container 就一切正常了


2019年12月31日 星期二

nodejs 錯誤處理

當在開發nodejs 程式 規模越來越大時
功能可能就被切割到多個function內
各階段的錯誤處理 有統一標準的作法
會便於建立標準的工作流程
整理一下關於錯誤的處理的注意要點

1.完全不處理 系統會自動以throw將錯誤丟出
2.若要對error資訊做處理或是加工 錯誤資訊
  請用try catch包起來
3.丟出錯誤 請統一用Error物件丟出
  catch攔截到的一定是Error物件
  發生錯誤自動throw出去的也一定是Error物件
4.當使用catch攔截到error物件處理後
  若寫了catch攔截錯誤
  在catch內執行throw將錯誤往外丟
  否則程式會繼續往下走
5.自訂Error物件
  e= new Error('messagxxxxxe') 可透過e.message 取得資訊
  系統throw出的錯誤訊息都會是在e.message
  若要加入自訂的資料屬性可以用 ex: e.info = sql ..
  Error物件屬性只有message是通用跨browser通用
6.系統已經加上error 處理的middleware
  若錯誤沒有被處理回到route上
  會被error handler接收

參考Error物件

2019年12月2日 星期一

mongodb建立使用者錯誤 Error: couldn't add user: Use of SCRAM-SHA-256 requires undigested passwords

mongo db 預設是不需要密碼連線的
要使用密碼連線須 先建立使用者帳號
原本3.x版建立使用者

db.createUser(
{
    user: "ozzysun",
    pwd: "xxxx",
    roles: [{ role: "root", db: "admin" }]
})

在4.x版後會有錯誤發生
須加上宣告密碼encode方式
db.createUser(
{
    user: "ozzysun",
    pwd: "xxx",
    roles: [{ role: "root", db: "admin" }],
    mechanisms:[  
      "SCRAM-SHA-1"
    ]
})

2019年11月22日 星期五

在cordova 使用 oogle map 發生 getCurrentPosition PositionError:timeout expired問題

使用getCurrentPosition抓取使用者位置
一直都很正常使用
最近發現使用coodva build app 一直無法抓到使用者位置
但在web上卻很正常
看到的錯誤為 PositionError:timeout expired
查了一下 只要在option內開啟enableHighAccuracy 即可解決

navigator.geolocation.getCurrentPosition(
  function(msg){
    console.log(msg)
  },
  function(error){
    console.log(error)
  },
  {
    enableHighAccuracy: false,
    maximumAge: 60000,
    timeout: 45000
  })

2019年11月7日 星期四

Gulp4 Did you forget to signal async completion?錯誤

在gulp task內以aysnc執行多項工作
在完成後希望可以用process.exit關閉視窗
process.exit的呼叫必須是在done()之後才執行
否則報錯

sampe code

gulp.task('myjob', async (done) => {
  for(var i=0; i < 10; i++){
    // loop do something
    const response = await doSomething(i);
    console.log(response)
  }
  done()
  process.exit()
})

2019年10月22日 星期二

android device沒有權限使用 no permissions (user in plugdev group; are your udev rules wrong?)

在接Android device 透過adb devices 列出可以使用的設備時
發現雖然找到了設備
但卻沒有權限可以使用
找到解法如下
1.使用lsusb找出設備的idVendor 與idProduct

 lsusb  
 Bus 001 Device 009: ID 2207:0010  
 以我的設備資訊 idVendor=2207 idProduct=0010  

2.在udev增加一筆android 設定規則
 sudo vi /etc/udev/rules.d/51-android.rules  
 內容  
 SUBSYSTEM=="usb", ATTR{idVendor}=="2207", ATTR{idProduct}=="0010", MODE="0666", GROUP="plugdev"  

3.讓設定生效

 sudo udevadm control --reload-rules  


若沒反應將設設備拔除再重新插入即可
參考來源

unable to preventDefault inside passive event listener invocation 錯誤處理

在addEventListener 強制加上{ passive: false } 即可
以iscroll 為例修改

 me.addEvent = function(el, type, fn, capture) {  
  // el.addEventListener(type, fn, !!capture) 改為  
  el.addEventListener(type, fn, { passive: false })  
 }  

2019年10月4日 星期五

[Violation] Added non-passive event listener to a scroll-blocking 警告


修正方式
1.npm install default-passive-events -S
2.在進入點entry.js加上
  import 'default-passive-events'