Я вижу следующую ошибку в браузере, когда запускаю свою веб-страницу для производства.
Не удалось загрузить сценарий модуля: ожидался сценарий модуля JavaScript, но сервер ответил MIME-типом «text/html». Строгая проверка типов MIME применяется для скриптов модулей согласно спецификации HTML.
Мой код — Reactjs, и я использую его из nodejs.
URL = https://qaentry.domain.com/It
Пакет VITE.json
"scripts": {
"dev": "vite --base=/pmo",
"build": "tsc && vite build --base=/pmo",
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
"preview": "vite --base=/pmo preview"
},
APP.tsx
const router = createBrowserRouter([
{
path: "/pmo",
element: <LandingPage />,
}
])
путь клиента
- client
---dist
-----assets
------ index--_a54pe.js
-----index.html
СЕРВЕР.js
app.get("*", (req, res) => {
res.sendFile(path.join(__dirname, "../../client/dist/index.html"));
});
Конфигурация VITE
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [react()],
build:{
outDir: "dist"
}
})
Он работает с использованием localhost, но не в производстве. Можете ли вы дать мне несколько советов по решению этой проблемы?
🤔 А знаете ли вы, что...
React Native - это фреймворк, основанный на React, для создания мобильных приложений для iOS и Android.
Вы сказали Vite создать свое приложение, ожидая, что оно будет обслуживаться в базовом каталоге /pmo
, но ваше экспресс-приложение обслуживает index.html
в /
.
Не меняя сборку Vite, вам нужно сделать несколько вещей...
Получите Express для обслуживания статических ресурсов по ожидаемому пути.
app.use('/pmo', express.static(path.join(__dirname, '../../client/dist'));
Обслуживать index.html
и любые динамические пути под ожидаемым путем.
app.get('/pmo/*', (req, res) => {
res.sendFile(path.join(__dirname, '../../client/dist/index.html'));
});
Сообщите BrowserRouter
, что маршруты и ссылки должны размещаться под базовым именем
const router = createBrowserRouter(
[
{
path: '/',
element: <LandingPage />,
},
],
{
basename: import.meta.env.BASE_URL, // dynamically get from Vite config
},
);