我正在使用Typescript创建我的第一个命令行节点模块,使用Webpack进行转换。我期望找到命令行参数数组的process.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上运行。
答案 0 :(得分:2)
感谢Jason Livesay让我走上正轨。 Webpack的默认目标是浏览器。
为了“打包”在类似环境的节点中执行的模块,您必须将'webpack.config.js'中的'target'属性设置为'node',如下例所示:
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;
答案 1 :(得分:0)
为什么在服务器代码上使用webpack--这是针对浏览器的,并解释了argv
问题。