首页 > 解决方案 > 如何将静态资产与 npm 模块可执行文件一起使用?

问题描述

有没有办法在 Node.js NPM 模块中拥有可执行文件(可执行文件位于与模块完全不同的位置),以获得可执行文件可以访问的附加文件(或带有文件的目录)?

这与从可执行文件的 npm 模块打开文件中的问题相同,但措辞不同,我有 REPL,我想加载可执行文件来自的模块中的文件。

这应该是简单而常见的任务,但我无法找到解决方案,也许你知道一些包含二进制文件的包,查看源代码我就能弄清楚这一点。

标签: javascriptnode.jsnpm

解决方案


找到了再次需要时如何做到这一点。查看模块的文档

我找到了功能:

require.resolve(request[, options])

使用内部 require() 机制来查找模块的位置,而不是加载模块,只返回解析的文件名。

所以要加载静态资产,你只需要这个:

function boostrap() {
    var path;
    try {
        path = require.resolve('./examples/helpers.lips');
    } catch (e) {
        path = require.resolve('@jcubic/lips/examples/helpers.lips');
    }
    var data = fs.readFileSync(path);
    return run(data, env);
}

我需要测试两种情况,如果我可以使用模块名称进行该功能并且我有源代码,它将抛出与我作为本地文件调用并且我不在源代码中一样的情况。


推荐阅读