我想创建一个Class
并让它在我的控制器上可用。我不想在这种特殊情况下使用帮助器,因为我打算稍后使用此代码创建一个npm包。我现在不想创建一个包,因为我不想让我的代码公开。
我已经尝试在hooks文件夹中的文件中添加此代码:
console.log('Hook executed!');
module.exports = class Test {
constructor() {
console.log('Object created!');
}
}
当我解除应用程序时,我看到它正在加载的钩子:
信息:启动应用程序...
钩子被执行了!
然后在随机控制器中我添加:
const test = new Test();
当我执行控制器时:
ReferenceError:未定义测试
更新:根据the documentation钩子以不同的方式定义。所以也许使用钩子不是最好的方法。关于如何在使用或不使用钩子的情况下在控制器上使用Class的任何想法?
您的文件应该像下面显示的这些文件:
myClass.js
'use strict';
class Test {
constructor() {
this.name = 'test';
}
}
module.exports = Test;
您要使用此类的另一个文件应如下所示:
index.js
const Test = require('./myClass');
let a = new Test();
console.log(a.name);
之后运行index.js文件时,您将在控制台中看到“test”。
好吧,研究一下Sails钩子,我发现它们有一个特殊的语法,所以这不是我想要的。另外,正如我已经说过的那样,我不想要控制器或助手。
因此,由于Sails没有默认方式创建包而没有实际创建它并将其包含在项目依赖项中,因此我采用了不同的方法。它不是很优雅,但它解决了这个特殊情况。我只是将我的Test.js
文件放在api
文件夹中,并将其包含在我的控制器中,如下所示:
const Test = require(__dirname + '/../../test');
let test = new Test();
文档说钩子被加载到sails.hooks
对象中并调用你使用sails.hooks[<hook-name>]
的特定钩子
我想你想用这样的东西来使用钩sails.hooks.Test
更多关于它https://sailsjs.com/documentation/concepts/extending-sails/hooks/using-hooks