首页 > 解决方案 > 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

谢谢你的帮助!

标签: javascriptimagemagicknext.jspm2

解决方案


总的来说,我发现了问题所在。所有代码都是正确的,问题就在这里,日志写给我,但我没看懂=(

PM2          | Change detected on path uploads/K0FuL5m0_/certificates/SQ-A000000219.png for app MyProject - restarting

在 eco.system 文件中,必须将选项 watch 从 true 更改为 false。这里描述了一个类似的问题。


推荐阅读