Skip to content

Commit f301621

Browse files
authored
Merge pull request #317 from christianvuerings/fix-ssr-check-node-js-22
Fix SSR check on Node.js v22
2 parents b4039e4 + 1a6b5bb commit f301621

File tree

7 files changed

+28
-8
lines changed

7 files changed

+28
-8
lines changed

.github/workflows/test.yml

+5-3
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,20 @@ on: [push, pull_request]
33
jobs:
44
build:
55
runs-on: ubuntu-latest
6+
strategy:
7+
matrix:
8+
node-version: ['20.x', '22.x']
69
steps:
710
- name: Checkout repository
811
uses: actions/checkout@v4
9-
- name: Use Node.js
12+
- name: Use Node.js ${{ matrix.node-version }}
1013
uses: actions/setup-node@v4
1114
with:
12-
node-version: '20.x'
15+
node-version: ${{ matrix.node-version }}
1316
cache: 'npm'
1417
- name: NPM install
1518
run: npm install
1619
- name: Verify build works
1720
run: npm run build
1821
- name: Jest
1922
run: npm run test
20-

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ require('codemirror/mode/javascript/javascript');
168168

169169
- Is server side rendering supported?
170170

171-
Yes. react-codemirror2 will prevent rendering in absence of `navigator`. You can also force the component to not render via a `PREVENT_CODEMIRROR_RENDER` global.
171+
Yes. react-codemirror2 will prevent rendering in absence of `window`. You can also force the component to not render via a `PREVENT_CODEMIRROR_RENDER` global.
172172

173173
- How can I get the instance?
174174

package.json

+1-3
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,8 @@
2020
"src/**"
2121
],
2222
"setupFiles": [
23-
"@nteract/mockument",
24-
"raf/polyfill"
23+
"./test/setup.js"
2524
],
26-
"testRegex": "./test/(index|index.server).spec.tsx",
2725
"transform": {
2826
".(ts|tsx)": "ts-jest"
2927
},

src/index.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import * as codemirror from 'codemirror';
44
declare let global: any;
55
declare let require: any;
66

7-
const SERVER_RENDERED = (typeof navigator === 'undefined' || (typeof global !== 'undefined' && global['PREVENT_CODEMIRROR_RENDER'] === true));
7+
const SERVER_RENDERED = (typeof window === 'undefined' || (typeof global !== 'undefined' && global['PREVENT_CODEMIRROR_RENDER'] === true));
88

99
let cm;
1010
if (!SERVER_RENDERED) {

test/index-server.spec.tsx

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import * as React from 'react';
2+
// @ts-ignore
3+
import { renderToString } from 'react-dom/server';
4+
5+
import {Controlled, UnControlled} from '../src';
6+
7+
describe('Server Rendering', () => {
8+
9+
it('should not render', () => {
10+
const uWrapper = renderToString(<UnControlled value="nomatter"/>);
11+
const cWrapper = renderToString(<Controlled value="nomatter" onBeforeChange={() => {}}/>);
12+
13+
expect(uWrapper).toBe("");
14+
expect(cWrapper).toBe("");
15+
});
16+
});

test/setup.js

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
if (typeof window !== 'undefined') {
2+
require('@nteract/mockument');
3+
require('raf/polyfill');
4+
}

0 commit comments

Comments
 (0)