为什么Node.js看不到node_modules文件夹中的文件

为什么Node.js看不到node_modules文件夹中的文件

有时开发者希望从node_modules中提供一些静态资源。

通常情况下,我们不想将任何内部路径暴露给外部。如果你的文件在node_modules目录下,你可以在服务器上创建一个静态路由,从你指定的目录获取文件。

express.static() 函数用于从一个目录中提供静态文件。在Express中使用 express.static() 内置的中间件函数。

语法:

express.static(root, [options])

参数: 此函数接受以下两个参数:

  • root: root参数指定您想要提供静态文件的目录。
  • options: 它是一个可选参数,包含诸如etag、dotfiles等属性。

例如,如果您想要从文件夹名称 public 提供静态资源,则使用以下代码。

app.use(express.static('public'))

现在,您的应用程序可以在所有URL上提供静态资源。

http://localhost:3000/images/kitten.jpg
http://localhost:3000/css/style.css

示例:node_modules 目录中提供 bootstrap CSS 文件。

步骤 1: 首先,创建一个 NodeJS 应用程序并安装所需的模块,例如 Express.jsbootstrap

mkdir Project 
cd Project
npm init -y
npm i express bootstrap

步骤2: 创建一个 index.js 文件,这是我们的基本服务器,其中包含以下代码。

index.js

const express = require('express'); 
const path = require('path');     
  
const app = express(); 
const PORT = 3000; 
  
// Static route 
// Serve bootstrap CSS file  
app.use('/bootstrap',  
    express.static(path.join(__dirname,  
      'node_modules/bootstrap/dist/css'))); 
  
// GET Request 
app.get('/', (req,res)=>{ 
    res.sendFile(path.join(__dirname, 'index.html')); 
}) 
  
// Start the server 
app.listen(PORT, err =>{ 
    err ?  
    console.log("Error in server setup") : 
    console.log("Server listening on Port", PORT) 
}); 

步骤3: 在您的根目录中创建一个 index.html 文件,并使用以下代码。

index.html

<!DOCTYPE html> 
<html> 
  
<head> 
    <title></title> 
    <link rel="stylesheet" 
      href="/bootstrap/bootstrap.min.css">  
</head> 
  
<body> 
    <h1 class="text-success">GeeksforGeeks</h1>  
</body> 
  
</html>

解释: 样式表的URL是 /bootstrap/bootstrap.min.css 其中 /bootstrap 是虚拟前缀。所以当服务器收到来自此URL的请求时,服务器会在指定的静态路径 node_modules/bootstrap/dist/css 上查找指定的文件,并将其发送给客户端。

为什么Node.js看不到node_modules文件夹中的文件

步骤4: 使用以下命令运行服务器:

node index.js

输出: 您将在终端屏幕上看到以下输出。

Server listening on Port 3000

现在打开任何浏览器并访问 http://localhost:3000/ ,您将看到以下输出。

为什么Node.js看不到node_modules文件夹中的文件

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程