我有以下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还没有透露任何可行的解决方案。我已经看到了这个问题的一个特定实例,但解决方案是通过不显示它来绕过警告。
答案 0 :(得分:47)
使用webpack-node-externals。
const nodeExternals = require('webpack-node-externals');
{
target: 'node',
externals: [nodeExternals()],
}
答案 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' } }]