iT邦幫忙

0

JS寫入JSON?

  • 分享至 

  • xImage

本次問題需要的程式連結:https://github.com/justmore5mins/class-game

我的問題:
我要寫一個聊天的軟體,然後我想要用json記錄聊天的內容,我的npm,node.js都裝好了,vsocde沒有讀到(但是有這樣的狀況)
https://ithelp.ithome.com.tw/upload/images/20230601/20151136wgUkjAaDQT.png
我用Chrome預覽程式,他卻出現這樣的錯誤https://ithelp.ithome.com.tw/upload/images/20230601/20151136eMMWlu9LKE.png
安裝好node.js跟npm的證明:
https://ithelp.ithome.com.tw/upload/images/20230601/20151136ldggY63nTx.png
請問我這樣子要怎麼辦

小哈片刻 iT邦研究生 5 級 ‧ 2023-06-01 22:49:06 檢舉
你要放你的package.json,才看得出問題。
greenriver iT邦研究生 5 級 ‧ 2023-06-02 16:54:16 檢舉
如果你想在後端寫程式,就直接讀取。
如果想在前端寫程式,可以安裝db.json的套件,然後要用fetch或axios的方式,去讀寫。
greenriver iT邦研究生 5 級 ‧ 2023-06-02 16:59:25 檢舉
前端還有indexedDB、localStorage可以儲存。就看你的選擇。最好的方式還是傳給後端,存進資料庫裡
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
2
Han
iT邦研究生 1 級 ‧ 2023-06-02 06:59:30
最佳解答

要先了解網頁原理

nodejs 的執行環境是在 server 端,因此才有辦法做檔案的讀取寫入

而瀏覽器都有 javascript 可以在 client 端執行
因此你才能在現在的網頁中與頁面甚至是伺服器互動

這兩者是有差異的,雖然程式語言都是 javascript 但執行環境的不同
會影響有些功能是不是能使用,例如:檔案讀取(fs)、指令執行(exec)
不然你可以試想:如果你平常逛網頁,該網頁的作者就能直接讀取你電腦的任何檔案,你敢逛嗎?

有看到你的 github 有寫 python
你可以理解為 python & nodejs 的執行環境是一樣的,都是後端

而你寫的 chat.js 的應用有用到 localStorage
這個執行環境就只有在瀏覽器上,就是前端
(可以想想你電腦有 localStorage 這東西嗎?還是只有瀏覽器有)

後端:只能在你電腦跑,你是伺服器架設的主人
前端:只要有瀏覽器連的到你電腦的裝置都可以跑,用手機、平板、電腦,在區網內都可以看到你的網頁

0
小哈片刻
iT邦研究生 5 級 ‧ 2023-06-02 01:40:49

你好像是想在瀏覽器裏面require('fs')

  • 瀏覽器沒有預設支援require,你需要https://requirejs.org/
  • fs只能在桌面程式用(node.js),瀏覽器不是node.js,不能存取檔案系統
看更多先前的回應...收起先前的回應...

那要怎麼樣不用node.js然後寫入json檔案

小哈片刻 iT邦研究生 5 級 ‧ 2023-06-02 07:06:34 檢舉

瀏覽器上不可能讓js能夠存取硬碟裏的檔案,不然隨便一個網站就可以駭入任何人的電腦了。

若你只是想存一點資料的話,可以用localStorage

function saveChat() {
    localStorage.setItem("chat", JSON.stringify(chatdata));
}
function loadChat() {
    let json = localStorage.getItem("chat");
    return JSON.parse(json);
}

localStorage是瀏覽器的標準配備,不過只有5-10MB的空間可用。

Felix iT邦研究生 2 級 ‧ 2023-06-03 09:05:18 檢舉

瀏覽器使用 File System Access API 就能存取檔案系統了。

小哈片刻 iT邦研究生 5 級 ‧ 2023-06-03 17:22:51 檢舉

原來如此,學到了~以前沒用過。
謝謝指點~

1

認真來說,這個問題的答案。我在其它篇說過不下10次過就是了。

簡單來說,看起來您還沒搞清楚何謂「前端」何謂「後端」
這很常是新手犯的毛病。

因為大多數的開發,都是本機開發。對初學者來說。
常常會將「前端」「後端」給搞混在一起。

畢竟都在同一台機器。常常會誤會。

再來第二種誤會。就是將 nodejs 誤會成「前端」
認真來說,它算是「後端」

最後再說明一件事。基於「本機安全性原則」
沒有任何一種前端語言。可以無條件的取用本機端的資源。
而是有限制條件下的取用。這是基於安全因素。
畢竟,你也不想在跑別人的網頁。就將自已電腦的檔案被自動的上傳取用吧。

以上消化一下吧。我不確定你能理解多少

我要發表回答

立即登入回答