- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试使用 Firebase Cloud Functions 创建 PDF 文件的缩略图。
调用 gs 后,出现以下错误:
2018-06-12T11:29:08.685Z E makeThumbnail: Error: spawn EACCES
at exports._errnoException (util.js:1020:11)
at ChildProcess.spawn (internal/child_process.js:328:11)
at exports.spawn (child_process.js:370:9)
at Object.exec (/user_code/node_modules/gs/index.js:86:28)
at Promise (/user_code/index.js:95:12)
at mkdirp.then.then (/user_code/index.js:86:12)
2018-06-12T11:29:08.698166767Z D makeThumbnail: Function execution took 780 ms, finished with status: 'error'
const functions = require('firebase-functions');
const mkdirp = require('mkdirp-promise');
const gcs = require('@google-cloud/storage')();
const admin = require('firebase-admin');
const spawn = require('child-process-promise').spawn;
const path = require('path');
const os = require('os');
const fs = require('fs');
const gs = require('gs');
const THUMB_MAX_HEIGHT = 200;
const THUMB_MAX_WIDTH = 200;
const THUMB_PREFIX = 'thumb_';
const gs_exec_path = path.join(__dirname, './lambda-ghostscript/bin/gs');
try{admin.initializeApp(functions.config().firebase); } catch(e) {}
exports.makeThumbnail = functions.storage.object().onFinalize((object) => {
const filePath = object.name;
const contentType = object.contentType;
const fileDir = path.dirname(filePath);
const fileName = path.basename(filePath);
const thumbFilePath = path.normalize(path.join(fileDir, `${THUMB_PREFIX} ${fileName}`));
const tempLocalFile = path.join(os.tmpdir(), filePath);
const tempLocalDir = path.dirname(tempLocalFile);
const tempLocalThumbFile = path.join(os.tmpdir(), thumbFilePath);
const tmp_dir = os.tmpdir();
if (fileName.startsWith(THUMB_PREFIX)) {
console.log('Is thumbnail');
return null;
}
const bucket = gcs.bucket(object.bucket);
const file = bucket.file(filePath);
const thumbFile = bucket.file(thumbFilePath);
const metadata = {
contentType: contentType,
};
return mkdirp(tmp_dir).then(() => {
console.log("Dir Created");
console.log(tempLocalFile);
return file.download({destination: tempLocalFile});
}).then(() => {
console.log("File downloaded");
if(!contentType.startsWith("image/")){
return new Promise((resolve, reject) => {
const pg= 1;
gs().batch().nopause()
.option(`-dFirstPage=${pg}`)
.option(`-dLastPage=${pg}`)
.executablePath(gs_exec_path)
.device('png16m')
.output(tempLocalThumbFile+".png")
.input(tempLocalFile)
.exec(err => err ? reject(err) : resolve());
});
}
else
{
var args = [ tempLocalFile, '-thumbnail', `${THUMB_MAX_WIDTH}x${THUMB_MAX_HEIGHT}>`, tempLocalThumbFile ];
return spawn('convert', args, {capture: ['stdout', 'stderr']});
}
}).then(() => {
return bucket.upload(tempLocalThumbFile, { destination: thumbFilePath });
}).then(() => {
fs.unlinkSync(tempLocalFile);
fs.unlinkSync(tempLocalThumbFile);
return result[0];
});
});
最佳答案
经过几个小时的挠头并毫无意义地一遍又一遍地运行相同的代码,我终于找到了问题所在!
您定义的可执行路径不正确。应该是 'gs'
.
这是一个完整的 gs() 调用示例:
gs()
.batch()
.option('-dFirstPage=2')
.option('-dLastPage=2')
.nopause()
.res(90)
.executablePath('gs')
.device('jpeg')
.output(tempNewPath2)
.input(tempFilePath)
.exec((err, stdout, stderr) => {
if (!err) {
console.log('gs executed w/o error');
console.log('stdout', stdout);
console.log('stderr', stderr);
resolve();
} else {
console.log('gs error:', err);
reject(err);
}
});
关于javascript - 错误 : Cloud Functions for Firebase spawn EACCES (ghostscript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50816826/
#!/bin/bash NAME="trueguild" # Name of the applica$ DJANGOD
我在 StackOverflow 和其他一些网站上阅读了一些答案,但似乎没有一个能解决我遇到的问题。 我正在通过终端安装 AppGyver 附加组件。出现以下错误: BradMacBookPro:Sp
我正在尝试读取一个csv文件并将其索引为 flex 文件。 Logstash给出此错误: [2020-03-15T14:43:02,424][ERROR][logstash.javapipeline
我的 friend 给了我一个带有 dockerfile 的项目,这似乎对他来说工作得很好,但我得到了一个权限错误。 FROM node:alpine RUN mkdir -p /usr/src/no
我的 friend 给了我一个带有 dockerfile 的项目,这似乎对他来说工作得很好,但我得到了一个权限错误。 FROM node:alpine RUN mkdir -p /usr/src/no
我正在尝试设置 nativescript 开发环境。我按照官方文档中描述的步骤进行操作。 Link 之后,我通过使用创建了一个新项目 tns create my-first-app --templat
我想将数据写入 SD 卡,但收到以下错误:打开失败:EACCES(权限被拒绝)。我正在开发的Android版本是jelly bean(4.3)。我还在 list 文件中授予了许可。 这是我的代码:
我已经安装了一个外部 SD 卡 (7.9GB)。以下是我用来将原始音频文件从我的项目传输到 SD 卡的代码。我正在使用 JellyBean 4.2 版本。我可以使用 fileManager 应用程序来
我试图将一些字符串保存到 SD 卡。但它抛出了这个异常 open failed EACCES (Permission denied)。我在设备(asus zenfone 5)上对此进行了测试。我已经在
我正在尝试运行此命令 ionic build android 但它给了我这个错误 谁能告诉我我做错了什么。我在应用程序文件夹 sudo chmod -R a+rwx/appfolder 上运行了以下权
我有一个照片编辑 android 应用程序,用户可以选择结果照片的输出目录。问题是谷歌对 KITKAT 版本的 sdcard 写入权限进行了更改,而具有 Android KITKAT 版本的设备将不允
我试图从一个特权进程创建一个POSIX消息队列(等待以后读取),然后从一个非特权进程打开这个消息队列(发送消息),后面的mq_open()返回:EACCES。 如果创建进程和打开进程都是特权进程或都是
为 targetSdkVersion v29 构建时,我无法访问存储。 这是我的gradle配置: compileSdkVersion 29 buildToolsVersion "29
每当我使用 ionic 时 platform add [platformname]它给了我这个错误 Error: spawn EACCES at exports._errnoException (ut
我无法使用命令 yarn install 启动我的项目。获取错误: error /Users/lera/Desktop/beam-web/node_modules/sharp: Failed to a
我通常在 c9 上编码,我试图在本地环境中工作,我正在尝试一个非常愚蠢的应用程序,但我收到错误。 应用程序: //APP IMPORTS var express = require('expre
这个问题已经有答案了: FileNotFoundException: /storage/emulated/0/Android (2 个回答) java.io.FileNotFoundException
我正在开发一个应用程序,我想在其中仅从 SD 卡中的互联网下载 PDF 文件。 我正在使用 android kitkat (4.4.4)。下载文件时出现错误提示 java.io.FileNotFoun
我已经通过 npm 升级了 cordova,并且我必须在 OS X 上通过 sudo 以 root 身份运行命令 现在,当我运行“cordova build android -verbose”时,我得
尽管我在 list 文件中添加了以下内容: 我仍然收到以下错误: 07-09 13:26:18.650: E/Trace(10542): error opening trace file: No
我是一名优秀的程序员,十分优秀!