0
module.js:341
    throw err;
    ^

Error: Cannot find module 'clarifai'
    at Function.Module._resolveFilename (module.js:339:15)
    at Function.Module._load (module.js:290:25)
    at Module.require (module.js:367:17)
    at require (internal/module.js:16:19)
    at Object.<anonymous> (/Users/shiva/seefood-backend/app.js:4:16)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Function.Module.runMain (module.js:447:10)

当我这样做时,我在终端中收到上述消息node app.js我已经安装了https://developer.clarifai.com/quick-start/上提到的 Clarifai npm 包,npm install clarifai但它仍然给我这个错误。我需要全局安装软件包吗?这也是我的app.js

var express = require('express')
var app = express();
var bodyParser = require('body-parser')
var Clarifai = require('clarifai')
var secrets = require('./secrets')
var keys = secrets.clarifaiConfig()

app.use(bodyParser.json());

var ClarifaiInstance = new Clarifai.App(
  keys.access_key,
  keys.secret_key
)

var store

var foodModel = 'bd367be194cf45149e75f01d59f77ba7'
var fnol = function getPredictionAsJSON(imageURL) {
  ClarifaiInstance.models.predict(foodModel, imageURL).then(
    function(response) {
      store = response.outputs[0].data
      console.log(store + ' from inside the fn');
    },
    function(err) {
      console.error(err);
    }
  );
  return store
}

app.listen(8000, function () {
  console.log('Recognize app listening on port 8000!')

  app.post('/classify', function(req, res) {
    var clarifaiData
    var imageURL = req.body.imageURL
      clarifaiData = fnol(imageURL)
      // console.log('cldata : '+ clarifaiData)
      var responseObject = {imageURL: imageURL, data: clarifaiData }
      // console.log('rObj : '+responseObject)
      res.send((responseObject));
  });

  app.get('/classify', function(req, res) {
    res.json((store));
  });
})
4

3 回答 3

1

您不需要全局安装。安装后,在同一位置会有一个 node_modules 目录,其中包含 clarifai 包以及任何其他依赖项。

于 2017-06-03T18:09:45.020 回答
0

首先,当您在...创建 Clarifai 的实例时,您错过了一个分号。

var ClarifaiInstance = new Clarifai.App(
  keys.access_key,
  keys.secret_key
)

...这可能会导致您的问题。

检查 Clarifai 是否列在您的package.json依赖项中。如果没有,请尝试运行npm install clarifai --save--save 选项指示 npm 自动将包添加到依赖项列表中。

此外,有时运行一个简单的npm install程序可以解决任何可能发生的依赖或奇怪的 node.js 问题。

于 2017-05-27T19:01:58.637 回答
0

如果您将 Clarifai 依赖项从前端移动到后端,则需要npm install clarifai在 api / backend 文件中运行。完成此操作后,检查您的 package.json 文件以确保 clarifai 列在您的依赖项中。

于 2021-08-31T10:15:04.670 回答