Пытаюсь развернуть Strapi CMS с TypeScript на Railway и получаю: «Не удается найти модуль 'typescript'»

Подробности

Попытка развернуть страпи CMS, написанную на TypeScript, на железной дороге. Я знаю, что есть шаблон JavaScript, но, к сожалению, нет шаблона TypeScript, и в документации нет ничего о развертывании в Railway с помощью TypeScript.

Журналы ошибок от железной дороги

Вот журналы ошибок с железной дороги. Я думаю, что он может пытаться скомпилировать файлы JavaScript, но я настроил компилятор на игнорирование узловых модулей.

#13 6.049 Error: Cannot find module 'typescript'
#13 6.049 Require stack:
#13 6.049 - /app/node_modules/fork-ts-checker-webpack-plugin/lib/typescript/type-script-worker-config.js
#13 6.049 - /app/node_modules/fork-ts-checker-webpack-plugin/lib/plugin-config.js
#13 6.049 - /app/node_modules/fork-ts-checker-webpack-plugin/lib/plugin.js
#13 6.049 - /app/node_modules/fork-ts-checker-webpack-plugin/lib/index.js
#13 6.049 - /app/node_modules/@strapi/admin/webpack.config.js
#13 6.049 - /app/node_modules/@strapi/admin/utils/get-custom-webpack-config.js
#13 6.049 - /app/node_modules/@strapi/admin/utils/index.js
#13 6.049 - /app/node_modules/@strapi/admin/index.js
#13 6.049 - /app/node_modules/@strapi/strapi/lib/commands/builders/admin.js
#13 6.049 - /app/node_modules/@strapi/strapi/lib/commands/builders/index.js
#13 6.049 - /app/node_modules/@strapi/strapi/lib/commands/build.js
#13 6.049 - /app/node_modules/@strapi/strapi/bin/strapi.js
#13 6.049     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15)
#13 6.049     at Function.resolve (internal/modules/cjs/helpers.js:107:19)
 
#13 6.049     at createTypeScriptWorkerConfig (/app/node_modules/fork-ts-checker-webpack-plugin/lib/typescript/type-script-worker-config.js:16:70)
#13 6.049     at createPluginConfig (/app/node_modules/fork-ts-checker-webpack-plugin/lib/plugin-config.js:11:82)
#13 6.049     at ForkTsCheckerWebpackPlugin.apply (/app/node_modules/fork-ts-checker-webpack-plugin/lib/plugin.js:57:63)
#13 6.049     at createCompiler (/app/node_modules/webpack/lib/webpack.js:73:12)
#13 6.049     at create (/app/node_modules/webpack/lib/webpack.js:134:16)
#13 6.049     at webpack (/app/node_modules/webpack/lib/webpack.js:158:32)
#13 6.049     at f (/app/node_modules/webpack/lib/index.js:64:16)
#13 6.049     at Object.build (/app/node_modules/@strapi/admin/index.js:60:20) {
#13 6.049   code: 'MODULE_NOT_FOUND',
#13 6.049   requireStack: [
#13 6.049     '/app/node_modules/fork-ts-checker-webpack-plugin/lib/typescript/type-script-worker-config.js',
#13 6.049     '/app/node_modules/fork-ts-checker-webpack-plugin/lib/plugin-config.js',
#13 6.049     '/app/node_modules/fork-ts-checker-webpack-plugin/lib/plugin.js',
#13 6.049     '/app/node_modules/fork-ts-checker-webpack-plugin/lib/index.js',
#13 6.049     '/app/node_modules/@strapi/admin/webpack.config.js',
#13 6.049     '/app/node_modules/@strapi/admin/utils/get-custom-webpack-config.js',
#13 6.049     '/app/node_modules/@strapi/admin/utils/index.js',
#13 6.049     '/app/node_modules/@strapi/admin/index.js',
#13 6.049     '/app/node_modules/@strapi/strapi/lib/commands/builders/admin.js',
#13 6.049     '/app/node_modules/@strapi/strapi/lib/commands/builders/index.js',
#13 6.049     '/app/node_modules/@strapi/strapi/lib/commands/build.js',
#13 6.049     '/app/node_modules/@strapi/strapi/bin/strapi.js'
#13 6.049   ]
#13 6.049 }

tsconfig.json

Конфигурация для компилятора TypeScript.

{
  "extends": "@strapi/typescript-utils/tsconfigs/server",
  "compilerOptions": {
    "outDir": "dist",
    "rootDir": "."
  },
  "include": [
    "./",
    "./**/*.ts",
    "./**/*.js",
    "src/**/*.json"
  ],
  "exclude": [
    "node_modules/",
    "build/",
    "dist/",
    ".cache/",
    ".tmp/",
    "src/admin/",
    "**/*.test.*",
    "src/plugins/**"
  ]
}

Пакет.json

Вот package.json из шаблона быстрого запуска typescript.

{
  "name": "aston-and-fincher-intranet-cms",
  "private": true,
  "version": "0.1.0",
  "description": "A Strapi application",
  "scripts": {
    "develop": "strapi develop",
    "start": "strapi start",
    "build": "strapi build",
    "strapi": "strapi"
  },
  "dependencies": {
    "@strapi/plugin-graphql": "^4.9.0",
    "@strapi/plugin-i18n": "4.9.0",
    "@strapi/plugin-users-permissions": "4.9.0",
    "@strapi/provider-upload-cloudinary": "^4.9.0",
    "@strapi/strapi": "4.9.0",
    "better-sqlite3": "8.0.1"
  },
  "author": {
    "name": "George Fincher"
  },
  "strapi": {
    "uuid": "3a5b99f5-14e8-4962-80ef-dcf9bb469d41"
  },
  "engines": {
    "node": ">=14.19.1 <=18.x.x",
    "npm": ">=6.0.0"
  },
  "license": "MIT"
}

Что я пробовал

Я следовал инструкциям по развертыванию с помощью TypeScript, мой tsconfig.json должен быть в порядке. Я добавил дополнительные переменные среды, но похоже, что это не имеет ничего общего с журналами ошибок.

Любая помощь будет высоко оценена, так как я бы предпочел не использовать версию JavaScript.

Зод: сила проверки и преобразования данных
Зод: сила проверки и преобразования данных
Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также...
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Мне нравится библиотека Mantine Component , но заставить ее работать без проблем с Remix бывает непросто.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
TypeScript против JavaScript
TypeScript против JavaScript
TypeScript vs JavaScript - в чем различия и какой из них выбрать?
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Не все нужно хранить на стороне сервера. Иногда все, что вам нужно, это постоянное хранилище на стороне клиента для хранения уникальных для клиента...
Что такое ленивая загрузка в Angular и как ее применять
Что такое ленивая загрузка в Angular и как ее применять
Ленивая загрузка - это техника, используемая в Angular для повышения производительности приложения путем загрузки модулей только тогда, когда они...
0
0
212
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Разобрался, его не было в документах, но они буквально не устанавливали машинописный текст в качестве зависимости. Сейчас собираюсь подать жалобу в Strapi. Должен был понять это раньше. Ну ладно 🤷‍♂️.

Если кто-то еще столкнется с этим, просто ставьте npm install typescript. Это все исправило для меня.

Другие вопросы по теме