【发布时间】:2017-06-22 15:00:16
【问题描述】:
我正在使用 webpack 来绑定服务器和客户端...
这里是 webpack 配置:
const webpack = require('webpack');
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const WebpackNotifierPlugin = require('webpack-notifier');
module.exports = {
entry: {
server: './src/main.server.ts',
client: './src/main.client.ts'
},
target: 'node',
devtool: 'source-map',
output: {
path: path.resolve(__dirname, '../dist'),
filename: '[name].js'
},
module: {
loaders: [
{
test: /\.ts$/,
loaders: ['awesome-typescript-loader', 'angular2-template-loader'],
exclude: [/node_modules/, /\.(spec|e2e)\.ts$/]
},
{test: /\.html$/, loader: 'html-loader'}
]
},
plugins: [
new WebpackNotifierPlugin({title: 'Angular files reloaded!!!'}),
new webpack.ContextReplacementPlugin(
/angular(\\|\/)core(\\|\/)@angular/,
path.resolve('./src'),
{}
),
new HtmlWebpackPlugin({
template: 'src/index.html'
}),
new CopyWebpackPlugin([
{
from: 'src/assets', to: 'assets'
}
])
],
resolve: {
extensions: ['.js', '.ts', '.html']
}
};
打字稿文件,tsconfig.json:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [ "es2015", "dom" ],
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true,
"allowSyntheticDefaultImports": true
},
"exclude": [
"node_modules/*",
"src/main.client-aot.ts",
"src/main.client-closure.ts",
"src/main.server-aot.ts"
]
}
并表达文件,main.server.ts:
// polyfills
import 'zone.js/dist/zone-node';
import 'reflect-metadata';
import 'rxjs/Rx';
// angular
// libs
import * as express from 'express';
import * as compression from 'compression';
import { ngExpressEngine } from '@nguniversal/express-engine';
// module
import { AppServerModule } from './app/app.server.module';
const server = express();
server.use(compression());
/**
* Set view engine
*/
server.engine('html', ngExpressEngine({
bootstrap: AppServerModule
}));
server.set('view engine', 'html');
server.set('views', '');
/**
* Point static path to `public`
*/
server.use('/', express.static('./', {index: false}));
/**
* Catch all routes and return the `index.html`
*/
server.get('*', (req: any, res: any) => {
res.render('index.html', {
req,
res
});
});
/**
* Port & host settings
*/
const port = 8000;
const PORT = process.env.PORT || port;
const HOST = process.env.BASE_URL || 'localhost';
const baseUrl = `http://${HOST}:${PORT}`;
server.set('port', PORT);
/**
* Begin listening
*/
server.listen(server.get('port'), () => {
// tslint:disable-next-line
console.log(`Express server listening on ${baseUrl}`);
});
当我绑定服务器时得到警告:
./~/express/lib/view.js 中的警告 80:29-41 关键依赖项: 依赖的请求是一个表达式
如何删除?为什么会出现该警告?
如果我使用webpack-node-externals,警告会消失,但我的代码不起作用。
有什么想法吗?
【问题讨论】:
-
除非您提供minimal reproducible example,否则我们无法为您提供帮助。请包含最少的必要组件(package.json、webpack 配置、相关源代码部分)以重现问题。
-
已更新相关代码
标签: javascript angular webpack