在webpack编译的JavaScript中读取NodeJS的process.argv

我试图用webpack编译一个简单的TS文件(通过“awesome-typecript-loader”),它应该读取命令行参数。

不过,我相信编译后的JS正在用一个闭包制作过程来重新定义Node的'process'variables.argv'undefined'。

TL; DR :如何用webpack编译的JS读取命令行参数?

a.ts

console.log(process.argv[2]); 

webpack.config.js

 const path = require('path'); module.exports = { resolve:{ extensions: ['.ts'] }, module: { rules: [{ test: /\.ts$/, loaders: ['awesome-typescript-loader'], include: [ path.resolve(__dirname, "src") ] }] }, entry: { a: "./src/a.ts" }, output: { path: path.resolve(__dirname, 'output'), filename: '[name].js' } }; 

的package.json

 { "name": "my-proj", "version": "1.0.0", "description": "some purpose", "scripts": { "start:a": "rimraf output/a.js & webpack --watch && node output/a.js myarg", "lint": "tslint \"src/*.ts\"", "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [ "javascript", "node" ], "author": "some guy", "license": "ISC", "dependencies": { "@types/lodash": "^4.14.56", "core-js": "^2.4.1", "lodash": "^4.17.4", "mathjs": "^3.10.0", "path": "^0.12.7", "rxjs": "^5.2.0", "ts-loader": "^2.0.2", "typings": "^2.1.0", "yargs": "^7.0.2" }, "devDependencies": { "@types/node": "^7.0.8", "awesome-typescript-loader": "^3.1.2", "compression-webpack-plugin": "^0.3.2", "concurrently": "^3.4.0", "copy-webpack-plugin": "^4.0.1", "cross-env": "^3.2.4", "external-loader": "^0.1.1", "extract-text-webpack-plugin": "^2.1.0", "file-loader": "^0.10.1", "nodemon": "^1.11.0", "null-loader": "^0.1.1", "raw-loader": "^0.5.1", "rimraf": "^2.6.1", "tslint": "^4.5.1", "typescript": "^2.2.1", "webpack": "^2.2.1", "webpack-merge": "^4.1.0" } } 

对于没有脚本的构build,只需运行: “webpack” ,进入输出文件夹,然后运行“node a.js myarg”

默认情况下,webpack创build一个打算在浏览器中运行的包。 浏览器没有process ,所以你不能访问命令行参数。 但是,当您尝试阅读命令行参数时,您可能想要构build一个应用程序,该应用程序旨在在Node.js中运行,而不是在浏览器中运行。 您可以通过将target选项设置为node来执行此操作。

添加到你的webpackconfiguration:

 target: 'node'