Webpack + Express:如何从服务器提供/ node_modules中的静态资源

时间:2016-08-12 17:29:11

标签: node.js express webpack

我正在尝试使用webpack为节点模块生成一个bundle.js文件。 bundle.js文件将在客户端浏览器中使用。

问题是,该项目有一些在node_modules目录中使用静态文件的依赖项。例如,其中一个静态文件的路径是

/node_modules/node-pogo-signature/lib/proto/Signature.proto

当我尝试在浏览器中运行bundle.js文件时,出现此错误

GET http://localhost:3000/proto/Signature.proto 404 (Not Found)

如果我将Signature.proto文件复制到我的/ public文件夹中,则该包将会找到它。但是,手动将静态文件从/ node_modules复制到/ public可能很繁琐且难以维护。 有没有更好的方法呢?

1 个答案:

答案 0 :(得分:1)

var myfile = require('./node_modules/node-pogo-signature/lib/proto/Signature.proto');

然后您可以将其添加到路线中,例如,如果您使用快递,则可以显示package.json文件的内容:

// create a new express server
            var express     = require('express'); // We use express as web server http://expressjs.com
            var app = express();
            // serve the files out of ./public as our main files
               app.use(express.static(__dirname + '/public'));
           // start server on the specified port and binding host
            app.listen(appEnv.port, '0.0.0.0', function() { 
            console.log("server started");
            });

// Shows content of package.json
var myfile = require('./package.json');

app.get('/showfile', function (req, res){
    if (debug) {
        console.log("showfile received a request");
    };
    res.send(myfile);
});

您只需在网址末尾添加/ showfile,例如:http://localhost:6006/showfile