【问题标题】:After build fails to do npm start. Error: Target container is not a DOM element构建失败后执行 npm start。错误:目标容器不是 DOM 元素
【发布时间】:2021-06-04 19:43:53
【问题描述】:

我是该网站和 React 的新手。 我在 React 中构建了一个可以正常工作的项目,并且一直在工作。 我想把它上传到firebase,所以我做了npm run build,我不能把它上传到firebase,现在npm start也不起作用。

这让我发疯,这是我得到的错误:

错误:目标容器不是 DOM 元素。

  3 | import App from './App';
  4 | import * as serviceWorker from './serviceWorker';
  5 | 
> 6 | ReactDOM.render(<App />, document.getElementById('root'));
  7 | 
  8 | // If you want your app to work offline and load faster, you can change
  9 | // unregister() to register() below. Note this comes with some pitfalls.

我想我不小心在使用 npm run build、firebase init 或 firebase deploy 时做错了。这可能真的很小

公共/index.html: 我做了 npm run build - 也许我改变了它

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Welcome to Firebase Hosting</title>

    <!-- update the version number as needed -->
    <script defer src="/__/firebase/8.2.10/firebase-app.js"></script>
    <!-- include only the Firebase features as you need -->
    <script defer src="/__/firebase/8.2.10/firebase-auth.js"></script>
    <script defer src="/__/firebase/8.2.10/firebase-database.js"></script>
    <script defer src="/__/firebase/8.2.10/firebase-firestore.js"></script>
    <script defer src="/__/firebase/8.2.10/firebase-functions.js"></script>
    <script defer src="/__/firebase/8.2.10/firebase-messaging.js"></script>
    <script defer src="/__/firebase/8.2.10/firebase-storage.js"></script>
    <script defer src="/__/firebase/8.2.10/firebase-analytics.js"></script>
    <script defer src="/__/firebase/8.2.10/firebase-remote-config.js"></script>
    <script defer src="/__/firebase/8.2.10/firebase-performance.js"></script>
    <!-- 
      initialize the SDK after all desired features are loaded, set useEmulator to false
      to avoid connecting the SDK to running emulators.
    -->
    <script defer src="/__/firebase/init.js?useEmulator=true"></script>

    <style media="screen">
      body { background: #ECEFF1; color: rgba(0,0,0,0.87); font-family: Roboto, Helvetica, Arial, sans-serif; margin: 0; padding: 0; }
      #message { background: white; max-width: 360px; margin: 100px auto 16px; padding: 32px 24px; border-radius: 3px; }
      #message h2 { color: #ffa100; font-weight: bold; font-size: 16px; margin: 0 0 8px; }
      #message h1 { font-size: 22px; font-weight: 300; color: rgba(0,0,0,0.6); margin: 0 0 16px;}
      #message p { line-height: 140%; margin: 16px 0 24px; font-size: 14px; }
      #message a { display: block; text-align: center; background: #039be5; text-transform: uppercase; text-decoration: none; color: white; padding: 16px; border-radius: 4px; }
      #message, #message a { box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); }
      #load { color: rgba(0,0,0,0.4); text-align: center; font-size: 13px; }
      @media (max-width: 600px) {
        body, #message { margin-top: 0; background: white; box-shadow: none; }
        body { border-top: 16px solid #ffa100; }
      }
    </style>
  </head>
  <body>
    <div id="message">
      <h2>Welcome</h2>
      <h1>Firebase Hosting Setup Complete</h1>
      <p>You're seeing this because you've successfully setup Firebase Hosting. Now it's time to go build something extraordinary!</p>
      <a target="_blank" href="https://firebase.google.com/docs/hosting/">Open Hosting Documentation</a>
    </div>
    <p id="load">Firebase SDK Loading&hellip;</p>

    <script>
      document.addEventListener('DOMContentLoaded', function() {
        const loadEl = document.querySelector('#load');
        // // ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
        // // The Firebase SDK is initialized and available here!
        //
        // firebase.auth().onAuthStateChanged(user => { });
        // firebase.database().ref('/path/to/ref').on('value', snapshot => { });
        // firebase.firestore().doc('/foo/bar').get().then(() => { });
        // firebase.functions().httpsCallable('yourFunction')().then(() => { });
        // firebase.messaging().requestPermission().then(() => { });
        // firebase.storage().ref('/path/to/ref').getDownloadURL().then(() => { });
        // firebase.analytics(); // call to activate
        // firebase.analytics().logEvent('tutorial_completed');
        // firebase.performance(); // call to activate
        //
        // // ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

        try {
          let app = firebase.app();
          let features = [
            'auth', 
            'database', 
            'firestore',
            'functions',
            'messaging', 
            'storage', 
            'analytics', 
            'remoteConfig',
            'performance',
          ].filter(feature => typeof app[feature] === 'function');
          loadEl.textContent = `Firebase SDK loaded with ${features.join(', ')}`;
        } catch (e) {
          console.error(e);
          loadEl.textContent = 'Error loading the Firebase SDK, check the console.';
        }
      });
    </script>
  </body>
</html>

我什么都没碰,在我执行 npm run build 之前一切都很好。

【问题讨论】:

  • 您的代码是否受版本控制?如果是这样,您可以简单地恢复到运行 npm build 之前的版本,但失败了。
  • 可以发public/index.html的内容吗?
  • @emi 是的,我现在添加了
  • 您的项目中有一个public/index.html(使用 Create React App 创建?)。这用作入口点并内置在build/index.html 中。它将包含初始 HTML 代码和一些用于下载应用程序其余部分的 JS。你发的那个和这个没有关系。您在构建过程中的某个地方删除了它,或者您发布了错误的。

标签: reactjs


【解决方案1】:

您需要在您的public/index.html 中添加一个&lt;div id="root"&gt;&lt;/div&gt;。这是使用ReactDOM.render(&lt;App /&gt;, document.getElementById('root')); 挂载React 初始组件的DOM 元素。

作为替代方案,您可以直接从 JavaScript 代码创建它,但上述解决方案是常用且最简单的解决方案。

【讨论】:

  • 我没看懂你,把你放在哪里
  • public/index.html 文件中的某个位置,&lt;body&gt; 标记中的某个位置,您希望安装 React 应用程序的位置。
  • 感谢您的帮助,您说得对,问题出在public/index.html 错误地在我构建时 - 我运行了它
  • 如果这有帮助,请将此答案标记为已接受。
【解决方案2】:

我犯的错误是公开运行npm run build。 我切换到以前的索引。

Firebase 初始化应该在构建文件夹上完成,而不是在公用文件夹上完成

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多