将Node本机模块部署到Azure WebSites,我遇到了一些问题

时间:2017-04-26 05:31:14

标签: node.js azure opencv azure-web-sites node-modules

  • 我将节点应用程序部署到Azure网站。
  • 棘手的部分是我使用名为" opencv"的节点模块。需要使用node-gyp在安装时编译。
  • 我使用node-gyp rebuild --arch=ia32命令在windows10中编译它。但是当我在Azure网站上使用它时,我遇到了以下问题:
Wed Apr 26 2017 04:48:35 GMT+0000 (Coordinated Universal Time): Application has thrown an uncaught exception and is terminated:

Error: The specified module could not be found.

\\?\D:\home\site\wwwroot\app\api\lib\opencv.node

at Error (native)
at Object.Module._extensions..node (module.js:434:18)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (D:\home\site\wwwroot\app\api\lib\image_operation.js:5:14)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)

这是我调用的代码:

'use strict';
var fs = require('fs');
var path = require('path');
var opencv = require("./opencv.node");

function isContains(str, substr) {
    return new RegExp(substr).test(str);
}

module.exports = {
    post: function (imageInfo, data) {
        if (isContains(imageInfo.imageName, ".yuv")) {
            var imageName = imageInfo.imageName.substr(0, imageInfo.imageName.length - 3) + "jpg";
            opencv.yuvToJpeg(path.resolve(__dirname, "../../image/" + imageName), imageInfo.width, imageInfo.height, Array.prototype.slice.call(data, 0));
        } else if (isContains(imageInfo.imageName, ".jpg")) {
            fs.writeFileSync(path.resolve(__dirname, "../../image/" + imageInfo.imageName), data);
    }
            return "success";
    }
};

但该文件实际部署在服务器上:

请帮助我,告诉我该怎么做

1 个答案:

答案 0 :(得分:0)

readme表示“在安装node-opencv之前,您需要安装OpenCV 2.3.1或更新版本”。由于Azure Web Apps是一种软件即服务(SaaS),我们无权在那里安装任意软件。但如果这是您的要求,则需要使用其他产品,例如Cloud Service或VM。