javascript - ImageMagic 在本地工作,而不是在构建中工作
问题描述
我在我的项目中使用 ImageMagic。我没有为此安装任何其他东西。这是在本地工作。
我目前创建了三个对象,但并不总是创建图像,本地没有这样的问题(纱线开发),只有构建。因此,产品。
步骤1
item = await Item.createObject(user, template);
第2步
...
public static async createObject(...) {
...
for(...) {
result = await this.createInstance(user, template);
...
}
}
第 3 步
private static async createInstance(user, template) {
...
const { imgName, description } = await Image.imageMagicCreate(...);
}
第4步
import * as shell from 'shelljs';
import * as fs from 'fs';
import * as appRoot from 'app-root-path';
// itemId - input data;
class Image {
public async imageMagicCreate(data: IMagicData) {
const userFolder = './uploads/' + user.userName;
const baseImage = appRoot.path + '/static/template.png';
if (!fs.existsSync(userFolder)) {
fs.mkdirSync(userFolder);
}
const itemsFolder = userFolder + '/items';
if (!fs.existsSync(itemsFolder)) {
fs.mkdirSync(itemsFolder);
}
const thumbsFolder = userFolder + '/thumbs/items';
if (!fs.existsSync(thumbsFolder)) {
fs.mkdirSync(thumbsFolder);
}
shell.exec(
`convert ${baseImage} -resize 420x380 \
-gravity south \
-fill '#5e6e87' -font Bookman-LightItalic -pointsize 14 -annotate +0+165 '${txtPart1}' \
-fill '#5e6e87' -font Bookman-LightItalic -pointsize 14 -annotate +0+140 '${txtPart2}' \
-fill '#5e6e87' -font Bookman-LightItalic -pointsize 14 -annotate +0+115 '${txtPart3}' \
${itemsFolder}/${itemId}.png`,
{async: true},
() => log('item created successfully'),
);
shell.exec(
`convert ${baseImage} -resize 420x380 \
-gravity south \
-fill '#5e6e87' -font Bookman-LightItalic -pointsize 14 -annotate +0+165 '${txtPart1}' \
-fill '#5e6e87' -font Bookman-LightItalic -pointsize 14 -annotate +0+140 '${txtPart2}' \
-fill '#5e6e87' -font Bookman-LightItalic -pointsize 14 -annotate +0+115 '${txtPart3}' \
${thumbsFolder}/${itemId}.png`,
{async: true},
() => log('thumbnail created successfully'),
);
}
}
return {
imgName: `${itemId}.png`,
description,
};
它在本地工作正常,但如果我确实构建,则工作不正确,而不是从命令开始:
pm2 start ./eco.system....
我必须绘制 6 张图像,3 张大 3400 * 2600 像素和 3 个 420 * 360 像素的缩略图。所有的缩略图都画了,然后不是全部,然后一张大图在那里,第二张被裁剪,第三张是一个空文件,然后就没有了……好像没有时间画,但是它似乎 {async: true} 设置是。
日志:
0|MyProject | (node:17046) DeprecationWarning: collection.count is deprecated, and will be removed in a future version. Use collection.countDocuments or collection.estimatedDocumentCount instead
PM2 | Change detected on path uploads/K0FuL5m0_/certificates/SQ-A000000219.png for app MyProject - restarting
PM2 | Change detected on path uploads/K0FuL5m0_/certificates/SQ-A000000219.png for app MyProject - restarting
PM2 | Change detected on path uploads/K0FuL5m0_/certificates/SQ-A000000219.png for app MyProject - restarting
PM2 | Stopping app:MyProject id:0
PM2 | Stopping app:MyProject id:1
PM2 | [Watch] Process name MyProject is being stopped so I won't restart it
PM2 | [Watch] Process name MyProject is being stopped so I won't restart it
PM2 | Change detected on path uploads/K0FuL5m0_/certificates/SQ-A000000219.png for app MyProject - restarting
PM2 | Change detected on path uploads/K0FuL5m0_/certificates/SQ-A000000219.png for app MyProject - restarting
PM2 | [Watch] Process name MyProject is being stopped so I won't restart it
PM2 | [Watch] Process name MyProject is being stopped so I won't restart it
PM2 | Change detected on path uploads/K0FuL5m0_/certificates/SQ-A000000219.png for app MyProject - restarting
PM2 | [Watch] Process name MyProject is being stopped so I won't restart it
PM2 | Change detected on path uploads/K0FuL5m0_/certificates/SQ-A000000219.png for app MyProject - restarting
PM2 | Change detected on path uploads/K0FuL5m0_/certificates/SQ-A000000219.png for app MyProject - restarting
PM2 | Change detected on path uploads/K0FuL5m0_/certificates/SQ-A000000219.png for app MyProject - restarting
PM2 | [Watch] Process name MyProject is being stopped so I won't restart it
PM2 | [Watch] Process name MyProject is being stopped so I won't restart it
PM2 | [Watch] Process name MyProject is being stopped so I won't restart it
PM2 | App name:MyProject id:1 disconnected
PM2 | App [MyProject:1] exited with code [0] via signal [SIGINT]
PM2 | App name:MyProject id:0 disconnected
PM2 | App [MyProject:0] exited with code [0] via signal [SIGINT]
PM2 | pid=17056 msg=process killed
PM2 | App [MyProject:1] starting in -cluster mode-
PM2 | pid=17046 msg=process killed
PM2 | App [MyProject:0] starting in -cluster mode-
PM2 | App [MyProject:1] online
PM2 | Stopping app:MyProject id:2
PM2 | App name:MyProject id:2 disconnected
PM2 | App [MyProject:2] exited with code [0] via signal [SIGINT]
PM2 | App [MyProject:0] online
PM2 | Stopping app:MyProject id:3
PM2 | pid=17073 msg=process killed
PM2 | App [MyProject:2] starting in -cluster mode-
PM2 | App name:MyProject id:3 disconnected
PM2 | App [MyProject:3] exited with code [0] via signal [SIGINT]
PM2 | pid=17083 msg=process killed
PM2 | App [MyProject:3] starting in -cluster mode-
PM2 | App [MyProject:2] online
PM2 | App [MyProject:3] online
谢谢你的帮助!
解决方案
总的来说,我发现了问题所在。所有代码都是正确的,问题就在这里,日志写给我,但我没看懂=(
PM2 | Change detected on path uploads/K0FuL5m0_/certificates/SQ-A000000219.png for app MyProject - restarting
在 eco.system 文件中,必须将选项 watch 从 true 更改为 false。这里描述了一个类似的问题。
推荐阅读
- reactjs - 开玩笑说 SyntaxError: Unexpected token export - React, Material.io
- sql-server - SQL Server 将 Varchar 转换为日期时间 SQL Server
- python - Python urllib.request.urlopen:AttributeError:'bytes'对象没有属性'data'
- php - PHP字符串到数组 - 我的字符串卡住了
- python - python处理带有命名空间的xml字符串
- c - C 中的位和数组 - 编程新手
- react-native - 为什么这个 react-native-reanimated 代码块不是每一帧都运行?
- google-apps-script - 简单的数据拼贴电子表格
- ssas - 有没有办法将此 MDX 语法转换为 DAX?
- javascript - 使用 javascript 从数据库中获取数据