Heroku "содержимое не из веб-пакета подается из / app / publi c", несмотря на использование всех настроек по умолчанию create-реагировать-app - PullRequest
0 голосов
/ 02 мая 2020

Я развертываю довольно простое c приложение React только для внешнего интерфейса (по сути, сайт stati c) в Heroku через интеграцию автоматического развертывания с Github. Я сделал это раньше с более сложным приложением и не было никаких проблем. Но теперь при развертывании я получаю следующие выходные данные:

2020-05-02T11: 18: 53.190530 + 00: 00 app [web.1]: [34mℹ [39m [ 90 м ds wds 」[39 м: выход веб-пакета подается из

2020-05-02T11: 18: 53.190635 + 00: 00 app [web.1]: [34 м ℹ [39 м [90 м「 wds 」[39 м: Контент не из веб-пакета подается из / app / publi c

2020-05-02T11: 18: 53.190727 + 00: 00 app [web.1]: [34 мℹ [39 м [90 м 「wds」 [ 39m: 404 с откатом к /

2020-05-02T11: 18: 53.190910 + 00: 00 приложение [web.1]: запуск сервера разработки ...

2020-05- 02T11: 18: 53.190912 + 00: 00 app [web.1]:

2020-05-02T11: 18: 53.287654 + 00: 00 heroku [web.1]: состояние изменено с начала на сбой

Когда я впервые получил это, утверждение было точным. У меня было несколько изображений, которые я загружал как src='/image.jpg'. Но я переместил все ресурсы, которые я на самом деле использую в своем приложении, в src / images и теперь импортирую их как компоненты. Я четыре раза просматривал каждый файл в своем каталоге sr c, и в каталоге publi c больше нет ссылок на файлы.

Я не сделал никакой пользовательской конфигурации Webpack, все это CRA по умолчанию. Так почему же она все равно выдает эту ошибку и как мне ее устранить?

Иерархия проекта:

├── src
│   └── index.js
│   └── app.js (etc)
│   └── images (this is where I am importing any images into my components now)
├── public
│   ├── index.html
│   ├── favicon.jpg
│   │── manifest.json
│   └── robots.txt
├── package.json
├── package-lock.json
├── .gitignore

webpack.config. js

mode: isEnvProduction ? 'production' : isEnvDevelopment && 'development',
    // Stop compilation early in production
    bail: isEnvProduction,
    devtool: isEnvProduction
      ? shouldUseSourceMap
        ? 'source-map'
        : false
      : isEnvDevelopment && 'cheap-module-source-map',
    // These are the "entry points" to our application.
    // This means they will be the "root" imports that are included in JS bundle.
    entry: [
      // Include an alternative client for WebpackDevServer. A client's job is to
      // connect to WebpackDevServer by a socket and get notified about changes.
      // When you save a file, the client will either apply hot updates (in case
      // of CSS changes), or refresh the page (in case of JS changes). When you
      // make a syntax error, this client will display a syntax error overlay.
      // Note: instead of the default WebpackDevServer client, we use a custom one
      // to bring better experience for Create React App users. You can replace
      // the line below with these two lines if you prefer the stock client:
      // require.resolve('webpack-dev-server/client') + '?/',
      // require.resolve('webpack/hot/dev-server'),
      isEnvDevelopment &&
        require.resolve('react-dev-utils/webpackHotDevClient'),
      // Finally, this is your app's code:
      paths.appIndexJs,
      // We include the app code last so that if there is a runtime error during
      // initialization, it doesn't blow up the WebpackDevServer client, and
      // changing JS code would still trigger a refresh.
    ].filter(Boolean),
output: {
      // The build folder.
      path: isEnvProduction ? paths.appBuild : undefined,
      // Add /* filename */ comments to generated require()s in the output.
      pathinfo: isEnvDevelopment,
      // There will be one main bundle, and one file per asynchronous chunk.
      // In development, it does not produce real files.
      filename: isEnvProduction
        ? 'static/js/[name].[contenthash:8].js'
        : isEnvDevelopment && 'static/js/bundle.js',
      // TODO: remove this when upgrading to webpack 5
      futureEmitAssets: true,
      // There are also additional JS chunk files if you use code splitting.
      chunkFilename: isEnvProduction
        ? 'static/js/[name].[contenthash:8].chunk.js'
        : isEnvDevelopment && 'static/js/[name].chunk.js',
      // webpack uses `publicPath` to determine where the app is being served from.
      // It requires a trailing slash, or the file assets will get an incorrect path.
      // We inferred the "public path" (such as / or /my-project) from homepage.
      publicPath: paths.publicUrlOrPath,
      // Point sourcemap entries to original disk location (format as URL on Windows)
      devtoolModuleFilenameTemplate: isEnvProduction
        ? info =>
            path
              .relative(paths.appSrc, info.absoluteResourcePath)
              .replace(/\\/g, '/')
        : isEnvDevelopment &&
          (info => path.resolve(info.absoluteResourcePath).replace(/\\/g, '/')),
      // Prevents conflicts when multiple webpack runtimes (from different apps)
      // are used on the same page.
      jsonpFunction: `webpackJsonp${appPackageJson.name}`,
      // this defaults to 'window', but by setting it to 'this' then
      // module chunks which are built will work in web workers as well.
      globalObject: 'this',
    },

1 Ответ

1 голос
/ 10 мая 2020

Итак, я получил решение, Heroku по умолчанию использует nodejs buildpack. Вам нужно добавить CRA (приложение для создания реагирования).

Сначала проверьте используемый вами пакет сборки heroku buildpacks -a <appname>

, затем измените на CRA buildpack heroku buildpacks:set mars/create-react-app -a <appname>* 1007. *

Затем повторно разверните.

Вы можете прочитать эту статью для получения дополнительной конфигурации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...