我正在尝试使用以下命令修补文件
var IS_DEV = false;
var webpack = require('webpack');
var path = require("path");
// Define plugins needed for production and dev cases
var _pluginsDev = [
new webpack.ProvidePlugin({
'fetch': 'imports-loader?this=>global!exports-loader?global.fetch!whatwg-fetch',
moment: 'moment',
ps: 'perfect-scrollbar'
}),
];
var _pluginsProd = [
new webpack.ProvidePlugin({
'fetch': 'imports-loader?this=>global!exports-loader?global.fetch!whatwg-fetch',
moment: 'moment',
ps: 'perfect-scrollbar'
}),
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify('production')
}
}),
new webpack.optimize.UglifyJsPlugin({
minimize: true,
compress: true,
output: { comments: false }
})
];
var _devtool = IS_DEV ? 'eval' : 'cheap-module-source-map';
var _plugins = IS_DEV ? _pluginsDev : _pluginsProd;
var _fileName = IS_DEV ? "./build/[name]-bundle.js" : "./dist/[name]-bundle.js";
var _bundles = {
login: './components/login/login.jsx',
home: './components/home/home.jsx'
};
module.exports = {
entry: _bundles,
output: {
path: path.resolve(__dirname, "wwwroot"),
publicPath: "/",
filename: _fileName
},
devtool: _devtool,
plugins: _plugins,
module: {
rules: [
{
test: /\.jsx?$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: "babel-loader",
options: {
presets: ['es2015', 'stage-2', 'stage-0', 'react']
}
}
}
]
},
resolve: {
extensions: ['.js', '.jsx']
}
}
我的runCommand语法如下:
patch -p0 < <file_path>
现在我正在传递我的补丁命令,如下所示:
func runCommand(cmd string, args ...string) error {
ecmd := exec.Command(cmd, args...)
ecmd.Stdout = os.Stdout
ecmd.Stderr = os.Stderr
ecmd.Stdin = os.Stdin
err := ecmd.Run()
return err
}
但我看到以下错误:
补丁:****无法找到文件&#39;&lt;&#39; :没有这样的文件或目录
你能告诉我这里缺少的东西吗?答案 0 :(得分:3)
与&#34;系统&#34;不同。来自C和其他语言的图书馆电话 os / exec包故意不调用系统shell和 不扩展任何glob模式或处理其他扩展, 管道,或通常由shell完成的重定向。包裹 表现得更像C&#34; exec&#34;一系列功能。扩展glob 模式,要么直接调用shell,要么小心逃避任何 危险输入,或使用路径/文件路径包的Glob功能。至 扩展环境变量,使用包os的ExpandEnv。
shell负责处理<
操作。您可以使用该文件作为输入自己设置stdin
,也可以使用shell。要使用shell,请尝试以下方法:
runCommand("/bin/sh", "patch -p0 < /tmp/file")
请注意,这不适用于Windows。阅读文件并自己写stdin
是一种更容易移植的解决方案。