Webpack和Express - 严重依赖关系警告

时间:2017-01-17 08:50:24

标签: express webpack

我有以下webpack.config.ts

var webpack = require( 'webpack' );
var path = require( 'path' );

module.exports = {

  entry: [
    './api/bin/www.ts'
  ],
  output: {
    path: path.resolve( __dirname, './dist/api' ),
    filename: 'index.js'
  },
  module: {
    loaders: [
      { test: /\.ts$/, loader: 'awesome-typescript-loader' },
      { test: /\.json$/, loader: 'json-loader' }
    ]
  },
  resolve: {
    extensions: [ '', '.js', '.ts' ]
  },
  target: 'node',
  node: {
    console: true,
    fs: 'empty',
    net: 'empty',
    tls: 'empty'
  }
};

当我运行webpack时,我收到有关依赖项的警告:

WARNING in ./~/express/lib/view.js
Critical dependencies:
78:29-56 the request of a dependency is an expression
@ ./~/express/lib/view.js 78:29-56

我从这开始使用的快速服务器不过是Hello World示例,而功能应该,但我担心这个警告。

我的googlefu还没有透露任何可行的解决方案。我已经看到了这个问题的一个特定实例,但解决方案是通过不显示它来绕过警告。

4 个答案:

答案 0 :(得分:47)

使用webpack-node-externals。

const nodeExternals = require('webpack-node-externals');

{
  target: 'node',
  externals: [nodeExternals()],
}

https://www.npmjs.com/package/webpack-node-externals

答案 1 :(得分:2)

我的警告仅通过以下方式解决:

module.exports =
{
    target: 'node',
    externals: {
        "express": "require('express')"
    }
}

答案 2 :(得分:1)

除了排除所有要与nodeExternals捆绑在一起的npm依赖项之外,您还可以通过替换自然地要求它来仅排除express

import express from 'express';
// Or
const express = require('express');

收件人

const express = __non_webpack_require__('express');

那将抑制快递引起的警告

答案 3 :(得分:0)

对于那些由于此处所述的视图库而只需要删除express的用户,您还可以通过webpack配置将外部中的express作为目标。

externals: [{ 'express': { commonjs: 'express' } }]