Nodejs中以前觉得jade好用 今天差点被气死

Nodejs中以前觉得jade好用 今天差点被气死

以前用jade感觉挺方便的.

结果今天换了个新服务器 用原来的jade放上了

结果差点被气死.

以前在link script什么的后面如果有个空格 是不会报错的.

结果现在如果任何元素后面有空格 并且不接内容的话 就会报错,气死我了 改了半天 = =!

8 回复

Node.js 中以前觉得 Jade 好用,今天差点被气死

背景

之前使用 Jade 模板引擎时,感觉非常方便。Jade 的语法简洁明了,非常适合用来生成 HTML 页面。然而,最近在更换新服务器后,重新部署旧项目时,遇到了一些意想不到的问题,差点让我抓狂。

具体问题

在之前的环境中,Jade 对于某些格式上的宽松处理,使得即使在 <script> 标签等元素后面有多余的空格也不会报错。然而,在新服务器上,Jade 变得更加严格,如果元素后面有任何多余的空格,并且没有紧跟其他内容,就会抛出错误。

例如,以下是一个简单的 Jade 模板片段:

doctype html
html
  head
    title Example Page
    link(rel="stylesheet" href="/styles.css")
    script(src="/scripts.js")  <!-- 这里有一个空格 -->

在之前的版本中,这段代码可以正常运行,不会有任何问题。但是在新环境中,这段代码会导致错误,因为 <script> 标签后面的空格被视为无效。

解决方案

为了修复这个问题,我们需要确保所有元素后面没有多余的空格。以下是修正后的代码:

doctype html
html
  head
    title Example Page
    link(rel='stylesheet', href='/styles.css')
    script(src='/scripts.js') <!-- 移除了空格 -->

通过移除多余的空格,我们解决了问题。虽然这看起来像是一个小细节,但在部署到新环境时却容易被忽略,导致调试过程中的困扰。

总结

这次经历提醒我们在开发过程中要注意代码的兼容性,尤其是在使用模板引擎时。尽管 Jade 提供了简洁的语法,但不同版本之间的细微差异可能会导致意外的问题。建议在部署到新的服务器或环境中时,仔细检查和测试代码,以避免不必要的麻烦。


不明白… 是因为新版本更新以后 script 改成 script. 的语法导致的吗?

不是 就是不允许下面这种情况

div空格
 p
div
 p

现在只能下面这样了

找个去除结尾空格的插件

VIM 有 vim-trailing-whitespace

居然用 代码格式的haha鄙视我…

主要是 不知道的情况 唉 谢啦

从你的描述来看,问题可能出在新版的模板引擎(可能是Pug,Jade的新版本)对语法的要求更加严格。在旧版本的Jade中,标签后面的空格可能会被忽略,但在新的Pug版本中,这种空格可能会导致语法错误。

举个例子,假设你之前写的Jade模板是这样的:

script(src='main.js' )

在旧版本中,这个写法是有效的。但是在Pug中,这将被视为一个错误,因为script标签后面不应该有多余的空格。

解决方法是在标签之后不要使用多余的空格,或者如果你确实需要空格来提高可读性,可以使用闭合标签或取消自闭合标签的方式:

script(src='main.js')
// 或者
script(src='main.js')

如果你确定你的代码中没有多余的空格,并且仍然遇到问题,你可以检查是否是其他地方的语法错误导致的问题,例如缺少闭合标签、属性值是否正确引用等。

如果上述修改仍然无法解决问题,可以尝试更新你的Pug版本到最新版,有时候语法错误是由模板引擎的bug引起的,新版本可能会修复这些问题。

示例代码:

doctype html
html
  head
    title Example
  body
    script(src='main.js')
    p This is a paragraph without any trailing spaces.

这样应该可以避免因为空格导致的语法错误。

回到顶部