【问题标题】:CodeMirror does not work with React/WebpackCodeMirror 不适用于 React/Webpack
【发布时间】:2015-10-21 10:56:19
【问题描述】:

我正在为我的 react 项目开发一些降价编辑器。 我想使用 CodeMirror 作为代码编辑器,但是当我使用 webpack 构建它时它似乎不起作用。

老实说,CodeMirror 在 DOM 树中,textArea 是隐藏的,但我看到的都是:

UPD:相同的代码在 codepen 上运行完美。我猜是 webpack 的问题。

一些代码:

index.js

import React from 'react';
import ReactDOM from 'react-dom';

import {Editor} from './components';

const rootElement = document.getElementById('root');

ReactDOM.render(<Editor />, rootElement);

组件/editor.js

import React, { Component } from 'react';
import cm from 'codemirror';
require('codemirror/mode/markdown/markdown');

export class App extends Component {
  componentDidMount() {
    this.codeMirror = cm.fromTextArea(this.refs.editor, {mode: 'markdown'})
  }
  render() {
    return (
      <div>
        <textarea ref='editor' autoComplete='off' defaultValue='default value' />
      </div>
    );
  }
}

server.js

var path = require('path');
var express = require('express');
var webpack = require('webpack');
var config = require('./webpack.config.dev');

var HOST = 'localhost';
var PORT = 3000;

var app = express();
var compiler = webpack(config);

app.use(require('webpack-dev-middleware')(compiler, {
  noInfo: true,
  publicPath: config.output.publicPath
}));


app.get('*', function(req, res) {
  res.sendFile(path.join(__dirname, '/app/index.html'));
});

app.listen(PORT, HOST, function(err) {
  if (err) {
    console.log(err);
    return;
  }

  console.log('Listening at http://' + HOST + ':' + PORT);
});

和 webpack.config.js

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

module.exports = {
  devtool: 'eval',
  entry: [
    'webpack-hot-middleware/client',
    './app/index'
  ],
  output: {
    path: path.join(__dirname, 'dist'),
    filename: 'bundle.js',
    publicPath: '/static/'
  },
  plugins: [
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NoErrorsPlugin()
  ],
  module: {
    loaders: [{
      test: /\.js$/,
      loaders: ['babel'],
      include: path.join(__dirname, 'app')
    }]
  }
};

【问题讨论】:

标签: javascript reactjs webpack codemirror


【解决方案1】:

webpack gitter chat@bebraw回答了我的问题:

Codemirror 可与 webpack 一起使用,但需要一些额外的设置。你需要 带来一些CSS等来渲染。 example

【讨论】:

  • Terry___S 我希望你发布了一个实际的答案,因为我仍然找不到解决方案,而且我遇到的问题与你完全相同...
  • 是的,这是一个实际的答案。您应该像在示例import 'codemirror/lib/codemirror.css'; import 'codemirror/theme/monokai.css'; 中那样在入口点文件中导入一些codemirror 的css。你还应该使用style-loader 来加载这个css。
  • 如果启用了热重载 (HMR),我也会遇到同样的问题。唯一的方法是禁用热重载。还是不知道为什么。
  • 这里是使用 codemirror + webpack 的示例:github.com/webpack/playground,也可以查看 react-toolbox 文档文件夹:github.com/react-toolbox/react-toolbox/blob/dev/docs/app/…
猜你喜欢
  • 2017-06-20
  • 2019-05-29
  • 2018-09-04
  • 2022-01-22
  • 2019-10-11
  • 2018-12-12
  • 1970-01-01
  • 1970-01-01
  • 2016-07-08
相关资源
最近更新 更多