Вопрос, ребята, я пробовал разные способы решения этой проблемы.
У нас есть две папки во временном порядке моно-репо (без рабочей области пряжи). Один называется Mgt-Shared один называется Сервер . Мы ссылаемся на общий доступ с серверов package.json
на "mgt-shared": "file:../mgt-shared"
, и я запускаю простой npm install
, чтобы получить наш общий доступ к серверам node_modules
. Оба проекта смешанные машинописные и javascript. Когда я запускаю webpack, чтобы попытаться объединить сервер, он работает нормально, файлы Typescript из общего доступа появляются в списке комплектов, но когда я запускаю node dist/app.bundle.js
- он не может разрешить некоторые модули (в частности, все машинописные) , Когда я запускаю webpack --json
, я нахожу это (кажется, что оно разрешается правильно):
{
"id": "mgt-shared/discounts/discount_reasons",
"identifier": "external \"mgt-shared/discounts/discount_reasons\"",
"name": "external \"mgt-shared/discounts/discount_reasons\"",
"index": 23,
"index2": 15,
"size": 42,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [
"main"
],
...
"failed": false,
"errors": 0,
"warnings": 0,
"assets": [],
"reasons": [
{
"moduleId": "./src/discounts/discount.ts",
"moduleIdentifier": "/home/mygastank/WebstormProjects/mygastank/server/node_modules/babel-loader/lib/index.js!/home/mygastank/WebstormProjects/mygastank/server/src/discounts/discount.ts",
"module": "./src/discounts/discount.ts",
"moduleName": "./src/discounts/discount.ts",
"type": "cjs require",
"userRequest": "mgt-shared/discounts/discount_reasons",
"loc": "20:24-72"
},
{...
],
"providedExports": null,
"optimizationBailout": [],
"depth": 6
},
Моя конфигурация веб-пакета такая:
const nodeExternals = require('webpack-node-externals')
module.exports = {
mode: 'development',
target: 'node',
// This forces resolution of native node modules
externals: [nodeExternals({ modulesFromFile: true })],
entry: './src/index',
output: {
filename: 'app.bundle.js'
},
resolve: {
extensions: ['.ts', '.tsx', '.js', '.json'],
},
module: {
rules: [
{
// Include ts, tsx, js, and jsx files.
test: /\.(ts|js)?$/,
loader: 'babel-loader',
include: [/node_modules\/mgt-shared/],
exclude: [/node_modules/],
options: {
presets: [
[
'env',
{
'targets': {
'node': 'current'
}
}
],
['@babel/preset-typescript',
{ 'allExtensions': true, 'isTSX': true }]
]
}
}]
}
}