【问题标题】:Loopback + Cannot initialize connector "loopback-component-storage"Loopback + 无法初始化连接器“loopback-component-storage”
【发布时间】:2018-01-08 07:03:08
【问题描述】:

我正在使用环回存储组件"loopback-component-storage" 来上传文件。但问题是在添加了这个存储组件和一个名为 Container 的模型后,我无法将应用程序中的模型迁移到数据库。

以下是我得到的错误

Error: Cannot create data source "storage": Cannot initialize connector "loopback-component-storage": FileSystemProvider: Path does not exist: ./server/files
    at new FileSystemProvider

但我在通过此描述的项目中也有 /server/files 目录 snapshot

下面是datasources.json文件

{
  "school": {
    "host": "127.0.0.1",
    "port": 3306,
    "url": "",
    "database": "school_db",
    "password": "root",
    "name": "school",
    "user": "root",
    "connector": "mysql"
  },
  "storage": {
    "name": "storage",
    "connector": "loopback-component-storage",
    "provider": "filesystem",
    "root": "./server/files"
  }
}

以下是model-config.json(部分,未满)

{
  "_meta": {
    "sources": [
      "loopback/common/models",
      "loopback/server/models",
      "../common/models",
      "./models"
    ],
    "mixins": [
      "loopback/common/mixins",
      "loopback/server/mixins",
      "../common/mixins",
      "./mixins"
    ]
  },
  "Container": {
    "dataSource": "storage",
    "public": true
  }
}

下面是容器(上传/下载文件)

{
  "name": "Container",
  "plural": "containers",
  "base": "Model",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {},
  "validations": [],
  "relations": {},
  "acls": [],
  "methods": {}
}

下面是我更新模型的脚本,比如地址

var server = require('./../../server');
var ds = server.dataSources.school;
var tables = ['Address'];
ds.autoupdate(tables, function(er,result) {
  if (er) throw er;

  ds.discoverModelProperties('Address', function (err, props) {
    console.log(props);
  });

  ds.disconnect();
});

谁能帮我找出问题所在,为什么存储组件会抛出 files 目录不存在的异常

【问题讨论】:

标签: node.js loopbackjs angular-loopback


【解决方案1】:

尝试在 server.js

中添加它
var ds = loopback.createDataSource({
    connector: require('loopback-component-storage'),
    provider: 'filesystem',
    root: 'server/files'
});

var storage = ds.createModel('storage');
app.model(storage);

也检查文档here

【讨论】:

    【解决方案2】:

    我认为 root 参数有问题,

    "storage": {
          "name": "storage",
          "connector": "loopback-component-storage",
          "provider": "filesystem",
          "root": "./files" 
        }
    

    请参考:Link

    https://strongloop.com/strongblog/working-with-file-storage-and-loopback/

    【讨论】:

    • 谢谢伊夫泰哈。我更改了您突出显示的根路径,但没有用。同样的问题。
    【解决方案3】:

    您是否在服务器文件夹中创建了文件夹?

    如果没有?您必须创建一个名为“files”的文件夹

    如果是?那么你的路径声明可能是错误的。尝试使用这样的完整路径

    "root": "/home/ubuntu/Documents/project/server/files"
    

    【讨论】:

      【解决方案4】:

      只需在根目录前添加一个点即可。

      "root": "../server/files"
      

      问题是您的更新或迁移脚本找不到目录。 对我来说,迁移脚本位于 bin 目录中,并且此目录结构位于上一层。

      迁移完成后恢复。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-09-11
        • 2016-03-05
        • 1970-01-01
        • 2016-09-19
        • 1970-01-01
        • 2015-05-20
        • 1970-01-01
        相关资源
        最近更新 更多