Node.js 节点替换一个文件中的多个值
我想用占位符替换现有文件中的N个值 当ExpressJS应用程序中的post请求被触发时,必须更改文件中的占位符值 例如,SASS文件:Node.js 节点替换一个文件中的多个值,node.js,express,fs,writefile,Node.js,Express,Fs,Writefile,我想用占位符替换现有文件中的N个值 当ExpressJS应用程序中的post请求被触发时,必须更改文件中的占位符值 例如,SASS文件: $textColor: ##textColor##; $backgroundColor: ##backgroundColor##; 以及我的功能,该功能可在1次更换后正常工作: router.post('/', function(req, res) { fs.readFile('main.scss', 'utf8', (err, data) =&g
$textColor: ##textColor##;
$backgroundColor: ##backgroundColor##;
以及我的功能,该功能可在1次更换后正常工作:
router.post('/', function(req, res) {
fs.readFile('main.scss', 'utf8', (err, data) => {
if(err) {
console.log('An error occured', err);
}
backgroundColorToReplace = data.replace(/##backgroundColor##/g,
req.body.backgroundColor);
// This value has to be replaced as well
textColorToReplace = data.replace(/##textColor##/g, req.body.textColor);
fs.writeFile('main.scss', backgroundColorToReplace, (err) => {
if(err) {
console.log('An error occured', err);
}
console.log('Colors successfully changed');
});
});
res.json({
textColor: req.body.textColor,
backgroundColor: req.body.backgroundColor
});
});
我怎样才能解决这个问题?有办法吗?好吧,您不是在同一个数据集上执行
replace()
,而是只写下第一个更改。Javascript字符串是不可变的,因此.replace()
不会更改原始数据。尝试保留公共数据容器:
// ...
data = data.replace(/##backgroundColor##/g, req.body.backgroundColor);
data = data.replace(/##textColor##/g, req.body.textColor);
fs.writeFile('main.scss', data, (err) => {
// etc.
好吧,您没有在同一个数据集上执行
replace()
,您只写下了第一个更改。Javascript字符串是不可变的,因此.replace()
不会更改原始数据。尝试保留公共数据容器:
// ...
data = data.replace(/##backgroundColor##/g, req.body.backgroundColor);
data = data.replace(/##textColor##/g, req.body.textColor);
fs.writeFile('main.scss', data, (err) => {
// etc.
另外,请注意,这将更改未来所有用户发出的所有请求的
textColor
和backgroundColor
。这真的是你想要的吗?或者这应该是每个用户的设置?@jfriend00是的,我知道。这是一个测试用例,仅用于播放和了解更多有关nodeJS中编程的信息。另外,请注意,这将更改来自所有未来用户的所有未来请求的textColor
和backgroundColor
。这真的是你想要的吗?或者这应该是每个用户的设置?@jfriend00是的,我知道。这是一个测试用例,只是为了更好地理解nodeJS中的编程。这就是我要找的:)谢谢。这就是我要找的:)