透過nvm 可以在主機上安裝多版本nodejs
任意切換
最近在把原本系統node16升級到node 20
一直遇到錯誤顯示 module的版本錯誤
但透過node --version檢查 版本已經20對了
還是報錯
最後發現當使用sudo node --version看到的版本卻是16
才發現若用sudo 執行會是執行到16的版本
這問題來自於
早期系統安裝node 16時
有把/usr/bin/node link到 nvm內16的版本
造成版本不一
透過nvm 可以在主機上安裝多版本nodejs
任意切換
最近在把原本系統node16升級到node 20
一直遇到錯誤顯示 module的版本錯誤
但透過node --version檢查 版本已經20對了
還是報錯
最後發現當使用sudo node --version看到的版本卻是16
才發現若用sudo 執行會是執行到16的版本
這問題來自於
早期系統安裝node 16時
有把/usr/bin/node link到 nvm內16的版本
造成版本不一
裝好pip3後 當需要透過pip安裝模組時
需先安裝pyOpenSSL
pip install pip --upgrade
pip install pyopenssl --upgrade
再安裝其他 就不會有這錯誤
今天發生一個問題
在nodejs以 express-session建立session與cookie
原本運作都很正常
但透過nginx proxy後發現set-cookie都失效了
client browser 不會產生cookie存放session id
導致之後的使用都有問題
查了一下才發現
nginx內設定了
proxy_hide_header Set-Cookie;
拿掉就解決了
今天在建立新主機遇到狀況
在nginx 以alias設定static檔案
ex:
location /test {
alias ~/myweb;
}
但一直遇到403Forbiden
檢查檔案權限都沒有問題
解決方式是
將nignx啟動使用者設定為
檔案的擁有者 即可
也就是修改
nginx.conf
user www-data
改成
user xxx使用者帳號
當在nodejs server 已經加入cors設定
就不能在nginx 設定
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
否則就會有重複設定的錯誤
原本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/"
當由私人git repo下載安裝
可能出現錯誤
server certificate verification failed. CAfile: none CRLfile: none
造成無法安裝
可以透過環境設定
export GIT_SSL_NO_VERIFY=1
跳過檢查就可安裝
在window上發生了幾次莫名的git忽然消失問題
察看目錄下.git目錄都還在
但系統確不認得這是一個git 目錄
處理的方式
1.檢查.git/config檔案是否變成亂碼
2.刪除 git/HEAD
3.git init
應該就回復正常了
當使用
sudo docker container stop xxx
卻發生 無法停止的錯誤
Error response from daemon: cannot stop container
可以透過
sudo aa-remove-unknown
之後就可以stop container
在舊版本的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))
即可正常運作
原本將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 就一切正常了
db.createUser(
{
user: "ozzysun",
pwd: "xxxx",
roles: [{ role: "root", db: "admin" }]
})
db.createUser(
{
user: "ozzysun",
pwd: "xxx",
roles: [{ role: "root", db: "admin" }],
mechanisms:[
"SCRAM-SHA-1"
]
})
navigator.geolocation.getCurrentPosition(
function(msg){
console.log(msg)
},
function(error){
console.log(error)
},
{
enableHighAccuracy: false,
maximumAge: 60000,
timeout: 45000
})
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()
})
lsusb
Bus 001 Device 009: ID 2207:0010
以我的設備資訊 idVendor=2207 idProduct=0010
sudo vi /etc/udev/rules.d/51-android.rules
內容
SUBSYSTEM=="usb", ATTR{idVendor}=="2207", ATTR{idProduct}=="0010", MODE="0666", GROUP="plugdev"
sudo udevadm control --reload-rules
me.addEvent = function(el, type, fn, capture) {
// el.addEventListener(type, fn, !!capture) 改為
el.addEventListener(type, fn, { passive: false })
}