Webpack 2: static-site-generator-plugin“, self „ist nicht definiert“

Habe ich einige problem mit static-site-generator-webpack-plugin.

In meinem Projekt verwende ich:

  • webpack v2.1.0-beta.27
  • static-site-generator-webpack-plugin v3.1.0
  • reagieren und reagieren-dom v15.4.1

Es ist eine einzelne Seite website.

Ist hier ein Teil der webpack.config.babel.js Datei:

JS:

import StaticSiteGeneratorPlugin from 'static-site-generator-webpack-plugin'
  
export default {
    entry: {
        main: './components/Root/index.jsx',
    },
    output: {
        path: path.join(process.cwd(), './public'),
        filename: '[name].[hash].js',
        libraryTarget: 'umd',
    },
  
      plugins: [
        //...
        new StaticSiteGeneratorPlugin('main', '/', {}),
      ]
        //...
  }

Und das ist ./components/Root/index.jsx Datei:

JS:

import React from 'react'
import ReactDOMServer from 'react-dom/server'
import HTMLDocument from 'react-html-document'

import App from '../App/index.jsx'

export default function (locals, callback) {
    const MyHtml = (
        <HTMLDocument
            title='My Page'
            metatags={[
              { name: 'description', content: 'My description' },
            ]}
            scripts={[ `${locals.assets.main}` ]}>
            <App />
        </HTMLDocument>
    )

    const html = ReactDOMServer.renderToStaticMarkup(MyHtml, locals.assets)
    callback(null, '<!doctype html>' + html)
}

Wenn ich versuche, es zu benutzen, sehe ich die Fehlermeldung: ERROR in ReferenceError: self is not defined. Was bedeutet es?

InformationsquelleAutor Entry Guy | 2016-11-27



One Reply
  1. 6

    Ich hatte den gleichen Fehler mit webpack-dev-server. Die Ursache für diesen Fehler ist die Ausführung auf einem server. Die server nicht das Objekt selbst. Sie können scope option (https://github.com/markdalgleish/static-site-generator-webpack-plugin#scope) oder einfach nur vermeiden, um static-site-generator-webpack-plugin auf dem server.

    Wenn Sie webpack-dev-server, dies zu lösen, – Fehler, den Sie haben zu setzen inline: false (https://github.com/webpack/docs/wiki/webpack-dev-server#inline-mode).
    Wenn Sie möchten, verwenden Sie Hot reload in Ihrem root-URL, ohne ein iframe, fügen Sie einfach <script src="http://localhost:8080/webpack-dev-server.js"></script> zu Ihrer Seite (https://github.com/webpack/docs/wiki/webpack-dev-server#inline-mode-in-html).

    • Ein friggin inline: false Eigentum gelöst. Kann es nicht glauben. Sie Den verdienen ein cookie.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.