簡體   English   中英

Google 雲函數部署:EROFS:只讀文件系統

[英]Google Clould Functions deploy: EROFS: read-only file system

我正在嘗試將我的 api 部署到 Google Cloud Functions,我得到了這個:

EROFS:只讀文件系統,mkdir '/user_code/uploads'

⚠  functions[post]: Deployment error. Function load error: 
    Code in file index.js can't be loaded. Is there a syntax error in your code? 
    Detailed stack trace: Error: EROFS: read-only file system, mkdir '/user_code/uploads'
    at Error (native)
    at Object.fs.mkdirSync (fs.js:932:18)
    at Function.sync (/user_code/node_modules/multer/node_modules/mkdirp/index.js:71:13)
    at new DiskStorage (/user_code/node_modules/multer/storage/disk.js:21:12)
    at module.exports (/user_code/node_modules/multer/storage/disk.js:65:10)
    at new Multer (/user_code/node_modules/multer/index.js:15:20)
    at multer (/user_code/node_modules/multer/index.js:95:12)
    at Object.<anonymous> (/user_code/api/user.js:105:46)
    at Module._compile (module.js:577:32)
    at Object.Module._extensions..js (module.js:586:10)

Cloud Functions 運行時中的所有內容都是只讀的,除了os.tmpdir() (可能是/tmp ,但您不應該假設)。 如果您有任何代碼(例如在api/user.js中)嘗試在其他任何地方編寫代碼,則會出錯。

python的同樣問題,上面的答案對我有用,但為了清楚起見。 我的錯誤——

File "/env/local/lib/python3.7/site-packages/google/cloud/storage/blob.py", line 753, in download_to_filename
    with open(filename, "wb") as file_obj:
OSError: [Errno 30] Read-only file system: 'testFile.zip'

可以在此處找到Google 的文檔。

雖然 Cloud Storage 是在 App Engine 中讀取和寫入文件的推薦解決方案,但如果您的應用程序只需要寫入臨時文件,您可以使用標准 Python 3.7 方法將文件寫入名為 /tmp 的目錄。

此目錄中的所有文件都存儲在實例的 RAM 中,因此寫入 /tmp 會占用系統內存。 此外,/tmp 目錄中的文件僅對創建這些文件的應用程序實例可用。 當實例被刪除時,臨時文件也被刪除。

Gen1 雲函數是只讀系統,而 Gen2 雲函數不是。 我建議將您的 function 更改為 Gen2(小心,這可能會干擾其他配置,因為 gen 2 可被視為雲運行)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM