Я пытаюсь заставить работать следующие настройки:
- Стандартное приложение машинописи Aurelia "Hello World" (создано CLI, сборка через Webpack)
- Обслуживается ExpressJS приложение с использованием webpack-dev-middleware
- Все объединено в один проект, чтобы иметь возможность обмениваться кодом между интерфейсным приложением Aurelia и Express JS фоновое приложение
Я смотрел с приложением Aurelia "Hello World", переместил код в папку src/frontend
, переименовал webpack.config.js
в webpack-frontend.config.js
и npm скриптов также на start-frontend
и так далее. После этих модификаций приложение Aurelia по-прежнему прекрасно работает.
Затем я добавил базовое c Express JS фоновое приложение с собственным webpack.config. js, tsconfig. js и, конечно, npm стартовый скрипт, который тоже отлично работает.
Наконец-то я попытался заставить приложение Express запустить интерфейсное приложение через webpack-dev-middleware
, например так:
private applyWebpackDevMiddleware(server: Express) {
if (Environment.isLocal()) {
const config = require('../../webpack-frontend.config.js');
const compiler = require('webpack')(config);
const webpackDevMiddleware = require('webpack-dev-middleware');
server.use(
webpackDevMiddleware(compiler, {
hot: true,
publicPath: config.output.publicPath,
compress: true,
host: 'localhost',
port: Environment.getPort()
})
);
const webpackHotMiddleware = require('webpack-hot-middleware');
server.use(webpackHotMiddleware(compiler));
}
}
Это точно такой же файл конфигурации веб-пакета, который работает просто отлично, когда используется напрямую с командой webpack. Тем не менее, вот так, я получаю следующее сообщение об ошибке:
(node:15111) UnhandledPromiseRejectionWarning: WebpackOptionsValidationError: Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema.
- configuration should be an object.
at webpack (/Users/will/Desktop/test/aurelia-express/node_modules/webpack/lib/webpack.js:31:9)
at ExpressServer.applyWebpackDevMiddleware (/Users/will/Desktop/test/aurelia-express/src/backend/ExpressServer.ts:141:48)
at ExpressServer.setup (/Users/will/Desktop/test/aurelia-express/src/backend/ExpressServer.ts:41:14)
at Function.createApplication (/Users/will/Desktop/test/aurelia-express/src/backend/Application.ts:18:29)
at Object.<anonymous> (/Users/will/Desktop/test/aurelia-express/src/backend/index.ts:12:13)
at Module._compile (internal/modules/cjs/loader.js:816:30)
at Module.m._compile (/Users/will/Desktop/test/aurelia-express/node_modules/ts-node/src/index.ts:439:23)
at Module._extensions..js (internal/modules/cjs/loader.js:827:10)
at Object.require.extensions.(anonymous function) [as .ts] (/Users/will/Desktop/test/aurelia-express/node_modules/ts-node/src/index.ts:442:12)
at Module.load (internal/modules/cjs/loader.js:685:32)
at Function.Module._load (internal/modules/cjs/loader.js:620:12)
at Function.Module.runMain (internal/modules/cjs/loader.js:877:12)
at Object.<anonymous> (/Users/will/Desktop/test/aurelia-express/node_modules/ts-node/src/bin.ts:157:12)
at Module._compile (internal/modules/cjs/loader.js:816:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:827:10)
at Module.load (internal/modules/cjs/loader.js:685:32)
(node:15111) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
Может кто-нибудь дать мне несколько указателей, почему тот же файл конфигурации работает нормально, когда используется непосредственно в веб-пакете, но не работает, когда используется через веб-пакет -dev-промежуточный слой? В конце концов, он находится в том же проекте с теми же узлами node_modules и, следовательно, с той же версией веб-пакета, верно?
Или у кого-нибудь есть работающая установка, как описано выше, которой он может поделиться? Спасибо !!