Guest User

Untitled

a guest
Jan 20th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.69 KB | None | 0 0
  1. {
  2. ...
  3. ...
  4. ...
  5. ...
  6.  
  7. "scripts": {
  8. "lint:js": "eslint src tools",
  9. "lint:css": "stylelint "src/**/*.{css,less,scss,sss}"",
  10. "lint": "npm run lint:js && npm run lint:css",
  11. "test": "mocha "src/**/*.test.js" --require babel-register --require test/setup.js",
  12. "test:watch": "npm run test -- --reporter min --watch",
  13. "clean": "babel-node tools/run clean",
  14. "copy": "babel-node tools/run copy",
  15. "extractMessages": "babel-node tools/run extractMessages",
  16. "bundle": "babel-node tools/run bundle",
  17. "build": "babel-node tools/run build",
  18. "deploy": "babel-node tools/run deployToAzureWebApps",
  19. "render": "babel-node tools/run render",
  20. "serve": "babel-node tools/run runServer",
  21. "start": "babel-node tools/run start"
  22. }
  23. }
  24.  
  25. app.use((err, req, res, next) => { // eslint-disable-line no-unused-vars
  26. console.log(pe.render(err)); // eslint-disable-line no-console
  27. const locale = req.language;
  28. const html = ReactDOM.renderToStaticMarkup(
  29. <Html
  30. title="Internal Server Error"
  31. description={err.message}
  32. style={errorPageStyle._getCss()} // eslint-disable-line no-underscore-dangle
  33. lang={locale}
  34. >
  35. {ReactDOM.renderToString(
  36. <IntlProvider locale={locale}>
  37. <ErrorPageWithoutStyle error={err} />
  38. </IntlProvider>,
  39. )}
  40. </Html>,
  41. );
  42. res.status(err.status || 500);
  43. res.send(`<!doctype html>${html}`);
  44. });
  45.  
  46.  
  47. app.listen(port, () => {
  48. console.log(`The server is running at http://localhost:${port}/`);
  49. });
  50.  
  51. import React, { PropTypes } from 'react';
  52. import serialize from 'serialize-javascript';
  53. import { analytics } from '../config';
  54.  
  55. class Html extends React.Component {
  56. static propTypes = {
  57. title: PropTypes.string.isRequired,
  58. description: PropTypes.string.isRequired,
  59. style: PropTypes.string,
  60. script: PropTypes.string,
  61. chunk: PropTypes.string,
  62. state: PropTypes.object,
  63. lang: PropTypes.string,
  64. children: PropTypes.string,
  65. };
  66.  
  67. render() {
  68. const { title, description, style, script, chunk, state, lang, children } = this.props;
  69. return (
  70. <html className="no-js" lang={lang}>
  71. <head>
  72. <meta charSet="utf-8" />
  73. <meta httpEquiv="x-ua-compatible" content="ie=edge" />
  74. <title>{title}</title>
  75. <meta name="description" content={description} />
  76. <meta name="viewport" content="width=device-width, initial-scale=1" />
  77. <link rel="apple-touch-icon" href="apple-touch-icon.png" />
  78. <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,400,300,600" />
  79. <script src="/js/modernizr.custom.js" />
  80. {style && <style id="css" dangerouslySetInnerHTML={{ __html: style }} />}
  81. </head>
  82. <body>
  83. <div id="app" dangerouslySetInnerHTML={{ __html: children }} />
  84. {state && (
  85. <script
  86. dangerouslySetInnerHTML={{ __html:
  87. `window.APP_STATE=${serialize(state, { isJSON: true })}` }}
  88. />
  89. )}
  90. {script && <script src={script} />}
  91. {chunk && <script src={chunk} />}
  92. {analytics.google.trackingId &&
  93. <script
  94. dangerouslySetInnerHTML={{ __html:
  95. 'window.ga=function(){ga.q.push(arguments)};ga.q=[];ga.l=+new Date;' +
  96. `ga('create','${analytics.google.trackingId}','auto');ga('send','pageview')` }}
  97. />
  98. }
  99. {analytics.google.trackingId &&
  100. <script src="https://www.google-analytics.com/analytics.js" async defer />
  101. }
  102. <script src="/js/classie.js" />
  103. <script src="/js/progressButton.js" />
  104. </body>
  105. </html>
  106. );
  107. }
  108. }
  109.  
  110. export default Html;
Add Comment
Please, Sign In to add comment