#node.js #typescript #webpack #nodes
#node.js #typescript #webpack #узлы
Вопрос:
Я создаю свой первый модуль узла командной строки, используя Typescript, который передается с помощью Webpack. Процесс.свойство argv, в котором я ожидаю найти массив аргументов командной строки, пусто. В настоящее время единственный код, который у меня есть, просто регистрирует объект процесса на консоли. Это результат.
myArgs: { nextTick: [Function],
title: 'browser',
browser: true,
env: {},
argv: [],
version: '',
versions: {},
on: [Function: noop],
addListener: [Function: noop],
once: [Function: noop],
off: [Function: noop],
removeListener: [Function: noop],
removeAllListeners: [Function: noop],
emit: [Function: noop],
binding: [Function],
cwd: [Function],
chdir: [Function],
umask: [Function] }
Я заметил, что для «браузера» установлено значение true. Означает ли это, что узел считает, что он запущен в браузере, а не в командной строке.
К вашему сведению: я работаю на OSX.
Комментарии:
1. Ваш код был бы полезен.
Ответ №1:
Спасибо Джейсону Ливсею за то, что наставил меня на правильный путь. Целью по умолчанию для Webpack является браузер.
Для того, чтобы «упаковать» модуль, который выполняется в среде, подобной узлу, вы должны установить свойство ‘target’ в вашем ‘webpack.config.js ‘в ‘узел’, как в моем примере ниже:
var config = {
target: 'node',
entry: './src/index.ts',
output: {
filename: 'dist/index.js'
},
resolve: {
extensions: ['', '.webpack.js', '.web.js', '.ts', '.js']
},
module: {
loaders: [
{ test: /.ts$/, loader: 'ts-loader' }
]
},
externals : {
"archiver" : "archiver",
"lodash" : "lodash",
"xmlbuilder" : "xmlbuilder",
}
};
module.exports = config;
Ответ №2:
Почему вы используете webpack в коде сервера — это для браузера и объясняет argv
проблему.
Комментарии:
1. Я использую его для упаковки своих модулей в один файл. Мои модули не те, на которые я ссылаюсь из node_modules .