在视图中获取节点模块的路径

Getting the path of a node module in a view

我是 NodeJS 的初学者。我正在为 video-js 使用名为 videojs-playlist 的插件。文档说要像这样包含它:

<script src="path/to/video.js/dist/video.js"></script>
<script src="path/to/videojs-playlist/dist/videojs-playlist.js"></script>

如果 path/to 不是 root/node_modules 或类似的东西,那 path/to 究竟应该是什么?我应该如何从 ejs 视图访问这些文件?我已经使用 npm 安装了 video-jsvideojs-playlist

现在我的页面出现重定向错误,因为它没有从我尝试过的路径中找到文件。

如果路径开头没有/,则路径是相对于<script>标签所在的文件;否则,它是相对于网站根目录的——这可能意味着不同的东西,这取决于 if/how 你是 bundling/deploying 你的 javascript.

对于一个简单的案例,如果您在 index.html 中有脚本标记,并且您将 video.js 复制到与 index.html 相同的目录,您将通过以下方式引用:

<script src="video.js">

如果您使用 Node 在您的个人计算机上进行测试,您可以引用与您的 HTML 文件和 node_modules 目录相关的文件;但是,这在部署和管理真实应用程序的上下文中并不是最好的。

Node 允许您 require() 从您安装的依赖项中导入模块,而无需指定它们的确切位置和目录结构,但看起来这个特定的插件可能没有给您带来便利。

看来您需要一个捆绑器。 webpack, but there are others such as parcel and FuseBox 是一种广泛使用且有据可查的捆绑器。这些都能满足你的需求。

这些工具很可能就是 videojs-playlist README on GitHub 所说的:

Include videojs-playlist on your website using the tool(s) of your choice.

除其他功能外,这些工具还可以从您的 node_modules 依赖项之一和 "bundle" 相对于您的 javascript 应用程序(无论您想要什么)获取文件,这样您就不必不必随身携带一些预先安装的巨型 node_modules 目录——您只需要随身携带所需的内容,并按照自己的方式构建它。