gpt4 book ai didi

node.js - require.resolve() 参数中的尾部斜线是什么意思?

转载 作者:行者123 更新时间:2023-12-03 12:17:47 28 4
gpt4 key购买 nike

在今天使用 webpack 5.1.1 设置构建系统时,webpack 通知我,自 4.x 以来,API 发生了变化,webpack 默认不再包含 Node.js 核心模块的 polyfill,但我可以自己包含一个使用 require.resolve() 为这些缺失添加回退(它们显然在非 Node 上下文中)。

到目前为止一切顺利。然而,不清楚的是,为什么在这些指令中的一些指令中,模块名称后面有一个尾部斜线,而在其他情况下没有尾部斜线。

日志摘录:

没有尾部斜线的例子:

If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "stream": require.resolve("stream-browserify") }'
- install 'stream-browserify'

带有尾部斜杠的示例:

If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "buffer": require.resolve("buffer/") }'
- install 'buffer'

这让我想到了我的问题:require.resolve() 参数中的尾部斜线是什么意思?

最佳答案

思路如下。 buffer 是核心 Node 模块之一。如果执行 require.resolve('buffer') Node 模块解析算法将找到此文件 lib/buffer.js。但是您希望它实际上绕过核心模块并在 node_modules 文件夹中查找。添加尾部斜杠就可以了。

来自缓冲模块docs

To depend on this module explicitly (without browserify), require itlike this:

var Buffer = require('buffer/').Buffer // note: the trailing slash is important!

To require this module explicitly, use require('buffer/') which tellsthe node.js module lookup algorithm (also used by browserify) to usethe npm module named buffer instead of the node.js core module namedbuffer!

关于node.js - require.resolve() 参数中的尾部斜线是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64413530/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com