#webpack #vscode-extensions
#webpack #vscode-расширения
Вопрос:
Webpack выдает ошибки для двух моих импортированных файлов.
Импорт выглядит следующим образом.
import * as vscode from 'vscode';
import * as hljs from "highlight.js";
import { readFileSync, writeFileSync } from 'fs';
import * as http from "http";
import * as child_process from "child_process";
import * as fs from "fs";
import * as portfinder from "portfinder";
import * as nls from 'vscode-nls';
Первые шесть обрабатываются без инцидентов, но webpack искажается с течением portfinder
vscode-nls
времени.
> webpack --mode development
Hash: c7d673027a6e241aeb30
Version: webpack 4.44.2
Time: 2503ms
Built at: 11/05/2020 1:23:55 PM
Asset Size Chunks Chunk Names
extension.js 1.23 MiB main [emitted] main
extension.js.map 1.35 MiB main [emitted] [dev] main
Entrypoint main = extension.js extension.js.map
[./src/extension.ts] 15.4 KiB {main} [built] [2 errors]
[child_process] external "child_process" 42 bytes {main} [built]
[fs] external "fs" 42 bytes {main} [built]
[http] external "http" 42 bytes {main} [built]
[net] external "net" 42 bytes {main} [built]
[os] external "os" 42 bytes {main} [built]
[path] external "path" 42 bytes {main} [built]
[tty] external "tty" 42 bytes {main} [built]
[util] external "util" 42 bytes {main} [built]
[vscode] external "vscode" 42 bytes {main} [built]
196 hidden modules
ERROR in D:_vscode-printing-freevsc-printsrcextension.ts
./src/extension.ts
[tsl] ERROR in D:_vscode-printing-freevsc-printsrcextension.ts(7,29)
TS2307: Cannot find module 'portfinder'.
npm ERR! vscode-print@0.7.17 webpack: `webpack --mode development`
npm ERR! Exit status 2
Portfinder не является реальной проблемой; не было бы большой проблемой взять код и создать из него модуль ES6, что, вероятно, также помешало бы Typescript решить, что PortNumber доступен только для чтения (этого не должно быть).
Я нашел это по этому вопросу https://github.com/Microsoft/vscode-extension-samples/tree/master/webpack-sample#more
Если вы используете vscode-nls для локализации своего расширения, вы, вероятно, также используете vscode-nls-dev для создания языковых пакетов во время сборки. Для поддержки webpack в vscode-nls-dev добавлен загрузчик. Добавьте раздел ниже в модули / правила-конфигурация.
{
// vscode-nls-dev loader:
// * rewrite nls-calls
loader: 'vscode-nls-dev/lib/webpack-loader',
options: {
base: path.join(__dirname, 'src')
}
но я уже сделал то, что он советует. Самое интересное в этой информации — это прямое указание на то, что webpack и vscode-nls могут использоваться вместе. Менее обнадеживает то, что последние несколько выпусков vscode-nls связаны с тем, чтобы заставить это работать, что предполагает, что это не совсем просто.
Кто-нибудь знает о репозитории, который демонстрирует эту комбинацию технологий? Набросок того, что влечет за собой, подкрепленный ссылкой на рабочий репозиторий, был бы большим подспорьем.
Комментарии:
1. Привет @peter-wone, интересно, получилось ли у вас это работать?
Ответ №1:
к сожалению, vscode-nls-dev не поддерживает создание и объединение языкового файла (см. Это)
используйте gulp, если вы хотите использовать новый язык. Или вы можете развернуть webpack-loader.ts и webpack-bundler.ts введите описание ссылки здесь