我们可以在服务器的节点模块中提供静态文件吗?

时间:2018-06-18 15:52:40

标签: javascript node.js express node-modules

我很抱歉,如果这个问题看起来很愚蠢但是我正在开发一个NodeJs服务器,我现在正在使用它(在backend / server.js中)来获取我的公共文件:< / p>

app.use(express.static(Path.join(__dirname, '..', 'public')));

但我想知道我是否可以在我的路径中添加一个节点模块包,如:

app.use(express.static(Path.join(__dirname, '..', 'node_modules/fuelsdk-node')));

我的目录设置如下:enter image description here

我应该如何导入节点模块? 我可以同时使用两者吗?或者我必须以另一种方式做到这一点?谢谢!

1 个答案:

答案 0 :(得分:1)

建议不要直接从node_modules文件夹中调用静态文件。相反,一个好的做法是使用重定向。想法是有一个链接,它将调用node_modules文件夹中的静态资源。

app.use("link", "physical address");

在你的情况下,它将是:

app.use("/", express.static(Path.join(__dirname, '..', 'public')));
app.use("/fuelsdk-node", express.static(Path.join(__dirname, '..', 'node_modules/fuelsdk-node')));

现在,您可以通过链接调用静态文件。

为了更好地理解,请参阅node_modules

中的使用引导程序示例
npm install jquery
npm install bootstrap

server.js文件

// grab express
var express = require("express");

// create an express app
var app = express();

// CONFIGURE THE APP
// ==================================================
// tell node where to look for site resources
app.use('/', express.static(__dirname + '/public'));
app.use('/css', express.static(__dirname + '/node_modules/bootstrap/dist/css')); // redirect CSS bootstrap
app.use('/js',  express.static(__dirname + '/node_modules/bootstrap/dist/js')); // redirect JS bootstrap
app.use('/jquery',  express.static(__dirname + '/node_modules/jquery/dist')); // redirect JS jquery
// create an express route for a homepage
// http://localhost:8080/
app.get('/', function(req, res){
    res.sendfile('/index.html');
});

app.listen(8080);
console.log('Server has started');

public / index.html

<!DOCTYPE html>
<html>
<head>
    <title>Static Files</title>
    <link rel='stylesheet' href='/css/bootstrap.min.css' />
    <script type="text/javascript" src="/jquery/jquery.min.js"></script>
    <script type="text/javascript" src="/js/bootstrap.min.js"></script>
</head>
<body>

  <div class="alert alert-warning alert-dismissible fade show" role="alert">
    <strong>It works</strong> Static files from node_modules. css & javascript are connected by redirected link
    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
      <span aria-hidden="true">&times;</span>
    </button>
  </div>
  <script type="text/javascript">
    $('.alert').alert();
  </script>

</body>
</html>