2

有一个指南https://nginx.org/en/docs/njs/node_modules.html指南描述了如何将“本机”nodejs 模块与 njs 一起使用。

我按照指南进行操作,直到我不明白粗体字的含义:

请注意,在此示例中生成的代码未包装到函数中
,我们不需要显式调用它。结果在“dist”目录中:

$ cat dist/wp_out.js code.js > njs_dns_bundle.js

让我们在文件末尾调用我们的代码: <<<--- HERE

var b = set_buffer(global.dns);
控制台.log(b);

并使用节点执行它:

$节点./njs_dns_bundle_final.js

问题是我如何在 njs_dns_bundle_final.js 中包含/要求/导入 webpack 生成的 njs_dns_bundle.js,这是让我们在文件末尾调用我们的代码的名称,因为没有它我会收到错误:

njs_dns_bundle_final.js:1
var b = set_buffer(global.dns);
ReferenceError: set_buffer is not defined

我的代码.js:

module.exports = {
   hello: function set_buffer(dnsPacket) {
        // create DNS packet bytes
        var buf = dnsPacket.encode({
            type: 'query',
            id: 1,
            flags: dnsPacket.RECURSION_DESIRED,
            questions: [{
                type: 'A',
                name: 'google.com'
            }]
        })

        return buf;
    }
}

我的 njs_dns_bundle_final.js:

var myModule = require('./njs_dns_bundle');

var b = myModule.hello(global.dns);
console.log(b);

我认为节点运行良好?!:

node ./njs_dns_bundle_final.js
<Buffer 00 01 01 00 00 01 00 00 00 00 00 00 06 67 6f 6f 67 6c 65 03 63 6f 6d 00 00 01 00 01>

NJS 不会:

njs ./njs_dns_bundle_final.js
Thrown:
Error: Cannot find module "./njs_dns_bundle"
    at require (native)
    at main (njs_dns_bundle_final.js:1)

谢谢

4

0 回答 0