我的应用用了一个验证码的库ccap,这个库会建一个目录在下面生成图片文件,我应用部署时,会报没有操作文件权限的错误,我在本地调试是没有问题的。
{ [Error: EROFS, read-only file system '/mnt/avos/data/uluru-cloud-code/repos/bbzd5VQgsjpqEWoNfTLnzcii/node_modules/ccap/cap_img']
INFO 2015-12-29 11:10:16 errno: -30,
INFO 2015-12-29 11:10:16 code: 'EROFS',
INFO 2015-12-29 11:10:16 path: '/mnt/avos/data/uluru-cloud-code/repos/bbzd5VQgsjpqEWoNfTLnzcii/node_modules/ccap/cap_img',
INFO 2015-12-29 11:10:16 syscall: 'mkdir' }
ERROR 2015-12-29 11:10:16
ERROR 2015-12-29 11:10:16 [CImg] *** CImgIOException *** cimg::fopen(): Failed to open file '/mnt/avos/data/uluru-cloud-code/repos/bbzd5VQgsjpqEWoNfTLnzcii/node_modules/ccap/cap_img/captcha_0_91_1451358616541_0.jpeg' with mode 'wb'.
ERROR 2015-12-29 11:10:16 terminate called after throwing an instance of 'cimg_library::CImgIOException'
ERROR 2015-12-29 11:10:16 what(): cimg::fopen(): Failed to open file '/mnt/avos/data/uluru-cloud-code/repos/bbzd5VQgsjpqEWoNfTLnzcii/node_modules/ccap/cap_img/captcha_0_91_1451358616541_0.jpeg' with mode 'wb'.
ERROR 2015-12-29 11:10:16 Aborted (core dumped)
ERROR 2015-12-29 11:10:16
ERROR 2015-12-29 11:10:16 npm ERR! Linux 3.19.0-22-generic
ERROR 2015-12-29 11:10:16 npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "start"
ERROR 2015-12-29 11:10:16 npm ERR! node v0.12.7
ERROR 2015-12-29 11:10:16 npm ERR! npm v2.11.3
ERROR 2015-12-29 11:10:16 npm ERR! code ELIFECYCLE
ERROR 2015-12-29 11:10:16 npm ERR! mankr-service@1.0.0 start: node --harmony server.js
ERROR 2015-12-29 11:10:16 npm ERR! Exit status 134
ERROR 2015-12-29 11:10:16 npm ERR!
ERROR 2015-12-29 11:10:16 npm ERR! Failed at the mankr-service@1.0.0 start script 'node --harmony server.js'.
ERROR 2015-12-29 11:10:16 npm ERR! This is most likely a problem with the mankr-service package,
ERROR 2015-12-29 11:10:16 npm ERR! not with npm itself.
ERROR 2015-12-29 11:10:16 npm ERR! Tell the author that this fails on your system:
ERROR 2015-12-29 11:10:16 npm ERR! node --harmony server.js
ERROR 2015-12-29 11:10:16 npm ERR! You can get their info via:
ERROR 2015-12-29 11:10:16 npm ERR! npm owner ls mankr-service
ERROR 2015-12-29 11:10:16 npm ERR! There is likely additional logging output above.
ERROR 2015-12-29 11:10:16 npm ERR! Linux 3.19.0-22-generic
ERROR 2015-12-29 11:10:16 npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "start"
ERROR 2015-12-29 11:10:16 npm ERR! node v0.12.7
ERROR 2015-12-29 11:10:16 npm ERR! npm v2.11.3
ERROR 2015-12-29 11:10:16 npm ERR! path npm-debug.log.a4155977a47047c32831bd6e3d5d8d64
ERROR 2015-12-29 11:10:16 npm ERR! code EROFS
ERROR 2015-12-29 11:10:16 npm ERR! errno -30
ERROR 2015-12-29 11:10:16
ERROR 2015-12-29 11:10:16 npm ERR! rofs EROFS, open 'npm-debug.log.a4155977a47047c32831bd6e3d5d8d64'
ERROR 2015-12-29 11:10:16 npm ERR! rofs This is most likely not a problem with npm itself
ERROR 2015-12-29 11:10:16 npm ERR! rofs and is related to the file system being read-only.
ERROR 2015-12-29 11:10:16 npm ERR! rofs
ERROR 2015-12-29 11:10:16 npm ERR! rofs Often virtualized file systems, or other file systems
ERROR 2015-12-29 11:10:16 npm ERR! rofs that don't support symlinks, give this error.
ERROR 2015-12-29 11:10:16
ERROR 2015-12-29 11:10:16 npm ERR! Please include the following file with any support request:
ERROR 2015-12-29 11:10:16 npm ERR! /mnt/avos/data/uluru-cloud-code/repos/bbzd5VQgsjpqEWoNfTLnzcii/npm-debug.log
ERROR 2015-12-29 11:10:25 命令行部署应用失败: Error: updateContainers err: Error: 应用启动检测失败: Error: connect ECONNREFUSED

你好,现在云引擎本地目录是只读的,只有 /tmp 目录可以写文件,你可能要更改下文件输出的位置。

不过需要注意,每次部署之后 /tmp 目录就是全新的,甚至云引擎服务器会根据负载状况迁移节点,每次迁移之后 /tmp 目录也是全新的。所以不要在 /tmp 只能作为一个临时目录,不能作为一个持久化存储。

如果需要持久化保存文件,请使用 _File 表。

你好,目前云引擎的文件系统是只读的,你提到的这个包会向文件系统写入文件当作缓存,所以在云引擎上无法工作。

目前云引擎中只有 /tmp 目录是可写的,但我看了一下 ccap 这个库的缓存路径是硬编码在代码中的( https://github.com/DoubleSpout/ccap/blob/5c83c0dc246ef1cd15c9a8ede587130d620a58d1/lib/hcap.js#L314 ),如果不修改 ccap 本身的话可能没办法改变缓存路径。

我试了一下 captchapng ( https://www.npmjs.com/package/captchapng5 )这个包,在云引擎上是可用的,你可以考虑一下。