Google Clould Functions部署:EROFS:只读文件系统

时间:2018-07-12 14:38:47

标签: javascript google-cloud-functions multer

我正在尝试将我的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)

2 个答案:

答案 0 :(得分:4)

Cloud Functions运行时中的所有内容都是只读的,除了os.tmpdir()(很可能是/tmp,但您不应该这样假设)。如果您有任何尝试在其他任何地方编写的代码(例如,api/user.js中的代码),则会出错。

答案 1 :(得分:1)

与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的文档可以为found here

  

尽管建议使用Cloud Storage在App Engine中读写文件的解决方案,但是如果您的应用仅需要写入临时文件,则可以使用标准的Python 3.7方法将文件写入名为/ tmp的目录。

     

此目录中的所有文件都存储在实例的RAM中,因此写入/ tmp会占用系统内存。此外,/ tmp目录中的文件仅可用于创建文件的应用程序实例。删除实例后,临时文件也将删除。