diff --git a/bin/next-start b/bin/next-start index dd34b3a82e220045f9151035db30f43b4618d0b8..62eca75b80024c775afdcafe5c25a1e9ef7c01e7 100755 --- a/bin/next-start +++ b/bin/next-start @@ -42,8 +42,8 @@ const dir = resolve(argv._[0] || '.') const srv = new Server({ dir }) -if (!existsSync(resolve(dir, '.next'))) { - console.error(`> Could not find the '.next' directory! Try building your app with 'next build' before starting the server.`) +if (!existsSync(resolve(dir, '.next', 'BUILD_ID'))) { + console.error(`> Could not find a valid build in the '.next' directory! Try building your app with 'next build' before starting the server.`) process.exit(1) } diff --git a/examples/with-react-md/pages/index.js b/examples/with-react-md/pages/index.js index d1f8d3a25ee51342106a0a138920d68102851880..d8757c81d767752c6185c48811ba53b13f6170a0 100644 --- a/examples/with-react-md/pages/index.js +++ b/examples/with-react-md/pages/index.js @@ -1,6 +1,8 @@ import Head from 'next/head' import Link from 'next/link' +import { PureComponent } from 'react' + import Avatar from 'react-md/lib/Avatars' import Button from 'react-md/lib/Buttons/Button' import FontIcon from 'react-md/lib/FontIcons' @@ -28,17 +30,23 @@ const drawerHeaderChildren = [ /> ] -const NavigationLink = (props) => { - const { href, as, children, ..._props } = props - return ( -
- - - {children} - - -
- ) +class NavigationLink extends PureComponent { + // NOTE: Don't try using Stateless (function) component here. `ref` is + // required by React-MD/AccessibleFakeButton, but Stateless components + // don't have one by design: + // https://github.com/facebook/react/issues/4936 + render () { + const { href, as, children, ..._props } = this.props + return ( +
+ + + {children} + + +
+ ) + } } export default () => { diff --git a/server/build/webpack.js b/server/build/webpack.js index c0a0ffe093ece61354be62d86bc84f5ac7bb228b..a3a61c17aa900659311d11bf9a84a1afdb57bb6f 100644 --- a/server/build/webpack.js +++ b/server/build/webpack.js @@ -154,11 +154,12 @@ export default async function createCompiler (dir, { dev = false, quiet = false if (!(/\.js$/.test(interpolatedName))) { return { content, sourceMap } } - + const babelRuntimePath = require.resolve('babel-runtime/package') + .replace(/[\\/]package\.json$/, '') const transpiled = babelCore.transform(content, { presets: [require.resolve('babel-preset-es2015')], sourceMaps: dev ? 'both' : false, - // Here we need to resolve styled-jsx/style to the absolute paths. + // Here we need to resolve all modules to the absolute paths. // Earlier we did it with the babel-preset. // But since we don't transpile ES2015 in the preset this is not resolving. // That's why we need to do it here. @@ -168,7 +169,16 @@ export default async function createCompiler (dir, { dev = false, quiet = false require.resolve('babel-plugin-module-resolver'), { alias: { - 'styled-jsx/style': require.resolve('styled-jsx/style') + 'babel-runtime': babelRuntimePath, + react: require.resolve('react'), + 'react-dom': require.resolve('react-dom'), + 'react-dom/server': require.resolve('react-dom/server'), + 'next/link': require.resolve('../../lib/link'), + 'next/prefetch': require.resolve('../../lib/prefetch'), + 'next/css': require.resolve('../../lib/css'), + 'next/head': require.resolve('../../lib/head'), + 'next/document': require.resolve('../../server/document'), + 'next/router': require.resolve('../../lib/router') } } ]