无法阅读财产'注册'在hapi

时间:2018-01-21 14:25:02

标签: node.js hapijs

我开始使用nodejs的Hapi框架。我正在使用Hapi"版本":" 16.0.0"。我试图用Hapi加载静态页面和内容,为此我安装了" inert"在命令npm install --save inert的帮助下插件。 这是我的代码,我将其包含在我的server.js文件中,如下所示。

    server.register(require('inert'), (err) => {
        if (err) {
            throw err;
        }
        server.route({
            method: 'GET',
            path: '/hello',
            handler: function (request, reply) {
                reply.file('./public/hello.html');
            }
        });
    });

使用node server.js运行项目后,我收到了以下错误。

/Library/WebServer/Documents/pro_hapi/node_modules/hapi/lib/plugin.js:219
        if (plugin.register.register) {                             // Required plugin
                            ^

TypeError: Cannot read property 'register' of undefined
    at module.exports.internals.Server.internals.Plugin.register (/Library/WebServer/Documents/pro_hapi/node_modules/hapi/lib/plugin.js:219:29)
    at Object.<anonymous> (/Library/WebServer/Documents/pro_hapi/server.js:16:8)
    at Module._compile (module.js:635:30)
    at Object.Module._extensions..js (module.js:646:10)
    at Module.load (module.js:554:32)
    at tryModuleLoad (module.js:497:12)
    at Function.Module._load (module.js:489:3)
    at Function.Module.runMain (module.js:676:10)
    at startup (bootstrap_node.js:187:16)
    at bootstrap_node.js:608:3

1 个答案:

答案 0 :(得分:2)

我搜索了那个,我找到了一个解决方案,结束了以下事情

  1. 使用命令npm install inert --save安装inert插件将默认安装惰性版本5.x。
  2. Inert版本5.x对hapi v17支持进行了重大更改。这意味着对于我正在使用的hapi "version": "16.0.0",将需要使用Inert v4.x,或者,要使用Inert v5,您需要更新为hapi v17。
  3. 要安装npm较旧的软件包版本,我们需要运行以下命令。 npm install <package>@<version>
  4. 在我的情况下,我运行sudo npm install inert@4.2.1 --save,用惰性版本4.2.1覆盖现有的惰性包(5.x)。

    1. 最后,我再次使用node server.js运行我的项目,这次它有效。