gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 21:29:47 27 4
gpt4 key购买 nike

我正在尝试使用应该读取命令行参数的 webpack(通过“awesome-typescript-loader”)编译一个简单的 TS 文件。

但是,我相信编译后的 JS 正在使用闭包重新定义 Node “process”变量——使 process.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"
}
}

For building without script simply run: "webpack", go to output folder, and run "node a.js myarg"

最佳答案

默认情况下,webpack 会创建一个要在浏览器中运行的包。浏览器没有 process,因此您无法访问命令行参数。但是当您尝试读取命令行参数时,您可能想要构建一个旨在在 Node.js 中运行的应用程序,而不是在浏览器中。您可以通过设置 target 来做到这一点node 的选项。

将此添加到您的 webpack 配置中:

target: 'node'

关于javascript - 在 webpack 编译的 JavaScript 中读取 NodeJS process.argv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42983657/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com