I have created a react-codemirror 2 component in my react app but the linting feature of the package is not working. I tried browsing other stack overflow questions but since the questions are at least 2 years old it looks like the file structure for the original library i.e. codemirror has been changed and none of the solution seem to work. I also opened an issue in their Github repo but no response on that. Hope you can help, here’s the code for my component.
JavaScript
x
39
39
1
import React from "react";
2
import { UnControlled as CodeMirror } from "react-codemirror2";
3
4
import 'codemirror/lib/codemirror.css';
5
import 'codemirror/theme/material.css';
6
import 'codemirror/addon/lint/lint.css';
7
import 'codemirror/addon/hint/show-hint.css';
8
9
10
11
import 'codemirror/mode/javascript/javascript.js';
12
import 'codemirror/addon/lint/javascript-lint';
13
import 'codemirror/addon/lint/lint.js';
14
import 'codemirror/addon/hint/javascript-hint';
15
16
17
const JsEditor = ({code}) => {
18
return (
19
<div>
20
<h1> JavaScript </h1>
21
<CodeMirror
22
value={code}
23
options={{
24
gutters: ["CodeMirror-lint-markers"],
25
mode: "javascript",
26
theme: "material",
27
lineNumbers: true,
28
lineWrapping: true,
29
lint: true,
30
31
}}
32
33
/>
34
</div>
35
);
36
};
37
38
export default JsEditor;
39
Advertisement
Answer
The lint addon from CodeMirror requires jshint library. If you add it (npm i jshint
), the following code should work:
JavaScript
1
42
42
1
import React from 'react';
2
import { UnControlled as CodeMirror } from "react-codemirror2";
3
import 'codemirror/lib/codemirror.css';
4
import 'codemirror/theme/material.css';
5
import 'codemirror/addon/lint/lint.css';
6
import 'codemirror/addon/hint/show-hint.css';
7
import 'codemirror/mode/javascript/javascript.js';
8
import 'codemirror/addon/lint/javascript-lint';
9
import 'codemirror/addon/lint/lint.js';
10
import 'codemirror/addon/hint/javascript-hint';
11
import { JSHINT } from 'jshint';
12
window.JSHINT = JSHINT;
13
14
const JsEditor = ({ code }) => {
15
return (
16
<div>
17
<h1> JavaScript </h1>
18
<CodeMirror
19
value={code}
20
options={{
21
gutters: ["CodeMirror-lint-markers"],
22
mode: "javascript",
23
theme: "material",
24
lineNumbers: true,
25
lineWrapping: true,
26
lint: true,
27
}}
28
/>
29
</div>
30
);
31
};
32
33
function App() {
34
return (
35
<div className="App">
36
<JsEditor code={'var widgets =[]; debugger'} />
37
</div>
38
);
39
}
40
41
export default App;
42