节点CLI argv(arguments数组)为空

时间:2016-10-09 02:02:13

标签: node.js typescript webpack nodes

我正在使用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上运行。

2 个答案:

答案 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问题。