0

我已经用 fastify-cli 库和 command 设置了 fastify 框架fastify-cli generate。它有开箱即用的 fastify-autoload 插件。

但是,当我为 model.js 和 schema.js 文件添加我自己的服务时,它会抛出一个错误。

...
fastify.register(AutoLoad, {
    dir: path.join(__dirname, 'services'),
    options: Object.assign({}, opts),
    ignorePattern: /.*(model|schema)\.js/
})
...

错误信息:

assert.js:788
    throw newErr;
    ^

AssertionError [ERR_ASSERTION]: ifError got unwanted exception: plugin must be a function
    at wrap (D:\project\kuisioner\backend\node_modules\fastify-cli\start.js:124:5)
    ...
      actual: Error: plugin must be a function
    ...
    error Command failed with exit code 1.
    ...

但是当我手动注册时它会顺利运行

...
fastify.register(require('./services/quiz/get'))
fastify.register(require('./services/quiz/post'))
...

我的文件结构:

- src
  - plugins
    - db.js
  - services
  | - quiz
  |   - get.js
  |   - model.js
  |   - post.js
  |   - schema.js
  - app.js

我使用 fastify-clifastify start -l info src/app.js运行我的代码

这是我的回购https://github.com/nnfans/kuisionerid_backend

4

1 回答 1

2

检查您的回购错误是dir价值。您必须指向文件所在的目录,目前还不支持递归加载

  fastify.register(AutoLoad, {
    dir: path.join(__dirname, 'services/quiz'), 
    options: Object.assign({}, opts),
    ignorePattern: /.*(model|schema)\.js/
  })

有了这个改变,npm start意志就起作用了。

另一种选择是module.exports.autoload = false在需要跳过的文件中使用,但您的正则表达式是可以的。

于 2019-09-18T06:25:20.620 回答