Я собираю проект в бандл с использованием Webpack версии 5. В процессе сборки возникает ошибка, когда я запускаю собранный проект. Вот мой Webpack конфиг:
```javascript
const path = require('path');
const TerserPlugin = require('terser-webpack-plugin');
const WebpackObfuscator = require('webpack-obfuscator');
const webpack = require('webpack');
const { constants } = require('os');
/**
*
* @param {*} env
* @param {*} argv
* @returns {import('webpack').Configuration}
*/
module.exports = (env, argv) => {
return {
mode: 'development' || 'production',
entry: './src/index.ts',
target: 'node',
output: {
filename: 'index.js',
path: path.resolve('./bundle'),
library: {
type: 'commonjs2',
},
libraryTarget: 'commonjs2',
clean: true,
},
resolve: {
extensions: ['.ts', '.js', '.node'],
},
module: {
rules: [
{
test: /\.ts$/,
use: 'ts-loader',
exclude: /node_modules/,
},
{
test: /\.(node)$/,
loader: 'node-loader',
options: {
name: '[name]_[contenthash].[ext]',
flags: constants.dlopen.RTLD_NOW,
},
},
],
},
optimization: {
splitChunks: false,
minimize: false,
minimizer: [
new TerserPlugin({
minify: TerserPlugin.swcMinify,
terserOptions: {
format: { comments: false },
},
extractComments: false,
}),
],
},
plugins: [
new webpack.optimize.LimitChunkCountPlugin({ maxChunks: 1 })
],
};
};
```
При попытке запустить проект после сборки появляется следующая ошибка:
```
Error: Secret-Path\bundle\node_modules/onnxruntime-node/bin/napi-v3/win32/x64/onnxruntime_binding.node is not a valid Win32 application.
Secret-Path\bundle\node_modules/onnxruntime-node/bin/napi-v3/
```
Можете подсказать, в чем может быть проблема и как ее исправить?
Ошибка "не является действительным приложением Win32" обычно возникает, когда файл, который вы пытаетесь запустить, несовместим с вашей операционной системой или архитектурой. В данном случае проблема может быть связана с тем, что вы используете нативный модуль (файл с расширением `.node`), который не подходит для текущей конфигурации, либо он был неправильно собран или не корректно подключен в вашем проекте.
Вот несколько шагов, которые можно предпринять для решения этой проблемы:
### 1. Убедитесь в совместимости архитектуры
Проверьте, что версия модуля `onnxruntime-node`, которую вы используете, совместима с вашей операционной системой (Win32, x64) и архитектурой (x64, arm, arm64 и т.д.). Например, если вы собираете ваше приложение для x64, убедитесь, что все зависимости также x64.
### 2. Пересоберите модули
Иногда помогает полная переустановка модулей. Попробуйте следующие команды в терминале:
```bash
rm -rf node_modules
npm install
```
и затем пересоберите ваш проект.
### 3. Проверьте конфигурацию Webpack
Обратите внимание на то, как вы настраивали `target` в Webpack. Если ваше приложение будет работать на Node.js, `target: 'node'` должно быть правильным. Однако, возможно, вам потребуется использовать другие настройки в зависимости от статуса вашего проекта. Если вы собираете для браузера, измените `target` на 'web'.
### 4. Поменяйте конфигурацию для нативных модулей
Иногда нативные модули требуют дополнительной конфигурации. Убедитесь, что у вас в `webpack.config.js` правильно указан `node-loader` для `.node` файлов:
```javascript
{
test: /\.node$/,
use: 'node-loader',
},
```
### 5. Путь к модулю
Убедитесь, что путь к модулю `onnxruntime_binding.node` правильный. Путь должен указывать именно на сборку, которая подходит для вашей системы. Если данный модуль должен быть собран для вашего окружения, проверьте документацию для необходимых команд.
### 6. Попробуйте пакет `@napi-rs/onnxruntime`
Если модуль `onnxruntime-node` вызывает проблемы, вы также можете попробовать использовать альтернативный пакет, такой как `@napi-rs/onnxruntime`, который может быть более совместим с вашим стеком.
### 7. Проверка версий Node.js
Также убедитесь, что версия Node.js, которую вы используете, совместима с версией ваших модулей. Иногда обновление/понижение версии Node может помочь решить проблему.
### 8. Логи
Проверьте логи ошибки после сборки и запуска приложения. Они могут дать дополнительную информацию о том, что не так с модулем.
Если все вышеперечисленное не помогает, попробуйте более подробно изучить документацию к пакету `onnxruntime-node`, возможно там указаны проблемы совместимости или рекомендации по настройке.
Ответ можно найти тут :
Hi @samlhuillier you need to install this
https://aka.ms/vs/17/release/vc_redist.x64.exe
onnxruntime-node require you to have MSVS C++ redist
Переустановить и пересобрать аддон или скачать готовую сборку: https://onnxruntime.ai/docs/get-started/with-windo...