【问题标题】:Node CLI argv (arguments array) is empty节点 CLI argv(参数数组)为空
【发布时间】:2017-02-17 18:01:11
【问题描述】:

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

【问题讨论】:

  • 你的代码会很有帮助。

标签: node.js typescript webpack nodes


【解决方案1】:

感谢 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;

【讨论】:

    【解决方案2】:

    你为什么在服务器代码上使用 webpack —— 这是针对浏览器的,并解释了 argv 问题。

    【讨论】:

    • 我正在使用它将我的模块打包到一个文件中。我的模块不是我从 node_modules 引用的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多