NodeJS 在同构呈现中,"无法在模块外部使用import语句“错误

jtoj6r0c  于 2023-01-01  发布在  Node.js
关注(0)|答案(1)|浏览(135)

我一直收到一个错误,说我不能在模块外使用import语句,我已经将后端文件夹中的包json设置为module类型,并且不认为我从前端导入应用程序时有语法错误。可能是什么问题?
这是我的服务器。

import express from "express"
import React from 'react'
import {renderToString} from 'react-dom/server'
import db from './db.js'
import App from '../frontend/src/App.js';
const app = express();


app.use(express.static('../frontend/public')); // added ../ to front end

app.get('*', (req, res) => {
  
  const html = renderToString(React.createElement(App));
  res.send(`
    <!DOCTYPE html>
    <html>
      <head>
        <title>My App</title>
      </head>
      <body>
        <div id="root">${html}</div>
        <script src="/index.js"></script>
      </body>
    </html>
  `);
});

app.listen(8800, ()=> {
  console.log("Connected to backend!")
})

这是我的app. js

import React from 'react';
import {Footer, Contact, WhoChawewo, Header} from './containers';
import {Navbar, Background} from './components';
import {BrowserRouter, Routes, Route} from 'react-router-dom';
import './App.css';

/* deleted div app */
const App = () => {
  return (
    <BrowserRouter>
   <Navbar />
    <Routes>
     
          <Route exact path='/' element={< Header />}> </Route>
          <Route path='/about' element={< WhoChawewo />}> </Route>
          <Route path='/contact' element={< Contact />}> </Route> 
   </Routes>
   <Footer/>

</BrowserRouter>

  )
}

export default App

我没有使用任何transpilers,这可能是一个问题,或者有其他方法来实现通用渲染

bnlyeluc

bnlyeluc1#

如果您已经在package.json中设置了"type": "module",您可以尝试使用.mjs扩展名显式注解您的文件。
What is the difference between .js and .mjs files?
您还可以尝试使用Babel将代码移植到旧版本的JavaScript(https://babeljs.io/

相关问题