我目前试图取代我的旧的设置,使用webpack-开发服务器与一个更健壮的解决方案,基于快速webpack-中间件。所以我过去是这样运行它的:"webpack-dev-server-内容-基础公共/-历史-api-回退",但现在我想这样使用它:"节点devServer.js"。以下是我当前设置的详细信息。
网页包。配置。dev.js:
var path = require('path');
var webpack = require('webpack');
var debug = require('debug');
debug.enable('app:*');
var log = debug('app:webpack');
log('Environment set to development mode.');
var NODE_ENV = process.env.NODE_ENV || 'development';
var DEVELOPMENT = NODE_ENV === 'development';
log('Creating webpack configuration with development settings.');
module.exports = {
devtool: 'cheap-module-eval-source-map',
entry: [
'eventsource-polyfill', // necessary for hot reloading with IE
'webpack-hot-middleware/client',
'./src/index',
'./src/scss/main.scss',
],
output: {
path: path.join(__dirname, 'public/js'),
filename: 'bundle.js',
publicPath: '/'
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.NoErrorsPlugin()
],
module: {
loaders: [{
test: /\.jsx?/,
loaders: ['babel'],
include: path.join(__dirname, 'src')
},
{
test: /\.scss$/,
loader: 'style!css!sass',
}]
},
compiler: {
hash_type: 'hash',
stats: {
chunks: false,
chunkModules: false,
colors: true,
},
},
};
devServer。js:
var path = require('path');
var express = require('express');
var webpack = require('webpack');
var debug = require('debug');
// var history = require('connect-history-api-fallback');
var config = require('./webpack.config.dev');
var browserSync = require('browser-sync');
debug.enable('app:*');
var app = express();
var compiler = webpack(config);
var log = debug('app:devServer');
// app.use(history({ verbose: false }));
log('Enabling webpack dev middleware.');
app.use(require('webpack-dev-middleware')(compiler, {
lazy: false,
noInfo: true,
publicPath: config.output.publicPath,
quiet: false,
stats: config.compiler.stats,
}));
log('Enabling Webpack Hot Module Replacement (HMR).');
app.use(require('webpack-hot-middleware')(compiler));
log('Redirecting...');
app.get('/', function(req, res) {
res.sendFile(path.join(__dirname, '/public/', 'index.html'));
});
app.get('/js/bundle.js', function(req, res) {
res.sendFile(path.join(__dirname, '/public/js/', 'bundle.js'));
});
var port = 3000;
var hostname = 'localhost';
app.listen(port, hostname, (err) => {
if (err) {
log(err);
return;
}
log(`Server is now running at http://${hostname}:${port}.`);
});
var bsPort = 4000;
var bsUI = 4040;
var bsWeInRe = 4444;
browserSync.init({
proxy: `${hostname}:${port}`,
port: bsPort,
ui: {
port: bsUI,
weinre: { port: bsWeInRe },
},
});
你能告诉我哪里出了问题吗?我的印象是,我已经涵盖了所有的基础,但很明显,我遗漏了一些东西,因为尽管我能够访问html和js,但页面并没有显示出来(
像这样的东西对我很有用:
更改:
app.use(require('webpack-dev-middleware')(compiler, {
致:
var middleware = require('webpack-dev-middleware');
app.use(middleware)(compiler, {
然后更改你的应用程序。获取:
app.get('/js/bundle.js', function(req, res){
res.write(middleware.fileSystem.readFileSync(req.url));
res.end();
});
app.get('*', function(req, res){
res.write(middleware.fileSystem.readFileSync(path.join(__dirname, '/public/', 'index.html'))));
res.end();
});
我无法测试您的特定配置,所以我想知道您是否会与第一个app.get有问题,因为您正在请求一个不同于您正在服务的url,即/js/bundle.js到/Public/js/bundle.js'如果是,请尝试path.join(__dirname,'/Public/js/bundle.js')
而不是req.url
。
第二app.get应该为任何未解决的请求提供index.html,这对于React路由非常有效。
尝试静态资产的相对路径,例如,使用而不是
,如图所示:/public/
/public/
app.get('/', function(req, res) {
res.sendFile(path.join(__dirname, '/public/', 'index.html'));
});
app.get('/js/bundle.js', function(req, res) {
res.sendFile(path.join(__dirname, '/public/js/', 'bundle.js'));
});
>
我猜你肯定无论这个devServer.js
在哪里,在完全相同的位置都存在一个并行文件夹Public
您正在点击的是localhost:3000/
,而不是localhost:3000
如果这不起作用,试试这个
app.use(express.static(path.resolve(__dirname, './public'),{
index: 'index.html'
}));
你不需要这部分:
app.get('/js/bundle.js', function(req, res) {
res.sendFile(path.join(__dirname, '/public/js/', 'bundle.js'));
});
WebpackDev服务器中间件将为您实现这一点。所以,我认为只要去掉它就可以修复它。
我正在尝试使用webpack热中间件来热加载我的应用程序的模块。我也在使用webpack开发中间件。 这是我的设置。 包裹json 网页包。配置。js srcServer。js 安装程序不工作。当我更新代码时,编译工作正常,当我刷新浏览器时,新的应用程序代码被执行。但是,这些模块没有被更换。 浏览器控制台中的输出 网络流量 请帮我解决这个问题。谢谢
Macaron 会注入一些默认服务来驱动您的应用,这些服务被称之为 核心服务。也就是说,您可以直接使用它们作为处理器参数而不需要任何附加工作。 请求上下文(Context) 该服务通过类型 *macaron.Context 来体现。这是 Macaron 最为核心的服务,您的任何操作都是基于它之上。该服务包含了您所需要的请求对象、响应流、模板引擎接口、数据存储和注入与获取其它服务。 使用方法: pa
调用中间件的形式为: func( name string, args []reflect.Value, context Context, next NextInvokeHandler) (results []reflect.Value, err error) { ... results, err = next(name, args, context)
问题内容: 我在示例的底部创建了一个运行在端口3000上的小型服务器。您可以通过“ htto:// localhost:3000 / time”访问它。整个请求包含两个中间件。第一个“ cancelHandler”和第二个“ otherHandler”被调用-在4秒钟后响应一些虚拟数据。 对我的问题: 当我在浏览器中请求页面,然后取消请求时(在4秒之前)。服务器仍在后台处理goroutine /请
1.自我介绍。 1.1自我介绍中提到了一个未来打算做的项目,问我准备实现的功能。 2.手撕代码(提供的平台有点不太行) 2.1 代码思路? 2.2 写的代码时间复制度多少? 2.3 能想一个o(n)的复杂度方法吗? 3.直接问项目了(项目中用到的)。 3.1 用户关注、发帖、点赞等场景怎么设计,数据库存什么? 3.2关注场景用redis怎么存,用户关注的人和谁关注了用户的场景。 3.3对redis
中间件 captcha 用于为 Macaron 实例 提供验证码服务。 GitHub API 文档 下载安装 go get github.com/go-macaron/captcha 使用示例 想要使用该中间件,您必须同时使用 cache 中间件。 // main.go import ( "github.com/go-macaron/cache" "github.com/go-ma