Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 字符串原型在浏览器中工作,但在节点中不工作_Javascript_Node.js_Regex_Typescript - Fatal编程技术网

Javascript 字符串原型在浏览器中工作,但在节点中不工作

Javascript 字符串原型在浏览器中工作,但在节点中不工作,javascript,node.js,regex,typescript,Javascript,Node.js,Regex,Typescript,节点:8.1.0 我有以下原型: String.prototype.toSlug = function () { return (<string>this) .trim() .toLowerCase() .replace(/\s+/g, '-') .replace(/[^\w\-]+/g, '') .replace(/\-\-+/g, '-') .replace(/^-+/, '') .replace(/-+$/, '')

节点:8.1.0

我有以下原型:

String.prototype.toSlug = function () {
  return (<string>this)
    .trim()
    .toLowerCase()
    .replace(/\s+/g, '-')
    .replace(/[^\w\-]+/g, '')
    .replace(/\-\-+/g, '-')
    .replace(/^-+/, '')
    .replace(/-+$/, '')
}
它似乎不能正常工作。它所做的只是删除第一个空格并添加一个破折号,如图所示:

// Original: "Bed Time Stories"
// Outputs: "BedTime-Stories"
// Expected: "bed-time-stories"
如您所见,它甚至没有将字符串转换为小写

但是,当我在测试时,它会创建正确的输出字符串。这是什么原因造成的?

接口字符串{
interface String {
    toSlug(): string;
}

String.prototype.toSlug = function () {
  return (<string>this)
    .trim()
    .toLowerCase()
    .replace(/\s+/g, '-')
    .replace(/[^\w\-]+/g, '')
    .replace(/\-\-+/g, '-')
    .replace(/^-+/, '')
    .replace(/-+$/, '')
}

var str = "Bed Time Stories";

console.log(str.toSlug());
toSlug():字符串; } String.prototype.toSlug=函数(){ 返回(本) .trim() .toLowerCase() .替换(/\s+/g,“-”) .替换(/[^\w\-]+/g') .替换(/\-\-+/g,'-')) .替换(/^-+/,“”) .替换(/-+$/,'') } var str=“睡前故事”; console.log(str.toSlug());
我发现了错误,接口提供了TypeScript的契约,允许新方法的可见性。JavaScript实现提供了调用该方法时将执行的代码。代码中缺少的内容


资料来源:

这就是你用
返回(这个)…
的方式键入的吗?是的(复制和粘贴)没有修改这是Typescript,你在节点和Fiddle中使用它吗?是的:这是一个奇怪的输出,我真的不明白为什么Typescript不能编译这么简单的东西,但是似乎
toLowerCase
或全局替换都不起作用?我正在使用node
8.1.0
,如果这有区别的话。移动typescript元素并不能真正回答问题。我相信我发现了错误,请参阅更新的答案。我在代码中有这个问题,只是没有发布它。但答案是,我的pm2没有加载更改,即使它正在监视更改。关闭
pm2
进程并启动一个新进程可以解决此问题。
interface String {
    toSlug(): string;
}

String.prototype.toSlug = function () {
  return (<string>this)
    .trim()
    .toLowerCase()
    .replace(/\s+/g, '-')
    .replace(/[^\w\-]+/g, '')
    .replace(/\-\-+/g, '-')
    .replace(/^-+/, '')
    .replace(/-+$/, '')
}

var str = "Bed Time Stories";

console.log(str.toSlug());