【发布时间】:2018-11-08 17:45:56
【问题描述】:
我正在使用 Webpack + jade-loader + file-loader 预编译一些 Jade 代码并将其存储在模块文件中。那部分工作得很好,但是当我去执行存储在所述模块中的函数时,我得到ReferenceError: Invalid left-hand side in assignment。特别是在抱怨这个includeed 文件:
meta(name="viewport", content="initial-scale=1,user-scalable=no,width=device-width")
meta(http-equiv="X-UA-Compatible", content="IE=edge,chrome=1")
meta(http-equiv="Content-Type", content="text/html; charset=utf-8")
在第二行 - http-equiv="X-UA-Compatible" 部分。当它似乎完美地处理第一行时,我很难弄清楚为什么该行是一个问题。如果我在运行时编译代码,它可以正常工作,所以我认为这与畸形 Jade 没有任何关系(诚然,我是 Jade 的新手)。
我错过了什么?
更新
我开始怀疑 Jade 模板是作为 JavaScript 执行的。这是一个基本的 Jade 文件,其中包含有问题的 include:
doctype html
html
head
block head
include partials/meta.jade
body
p Hello Jade!
partials/meta.jade 是上面的代码。下面是出来的代码:
var jade = require("/mnt/c/Users/jdawsocy/projects/jadeson/node_modules/jade/lib/runtime.js");
module.exports = function template(locals) {
var buf = [];
var jade_mixins = {};
var jade_interp;
;var locals_for_with = (locals || {});(function (undefined) {
buf.push("<!DOCTYPE html><html><head>" + (null == (jade_interp = require("/mnt/c/Users/jdawsocy/projects/jadeson/src/jadeson/views/partials/meta.jade").call(this, locals)) ? "" : jade_interp) + "</head><body><p>Hello Jade!</p></body></html>");}.call(this,"undefined" in locals_for_with?locals_for_with.undefined:typeof undefined!=="undefined"?undefined:undefined));;return buf.join("");
}
似乎require 实际上是在尝试加载meta.jade 文件,就好像它的编译方式与“Hello Jade”模板类似。
如果可能的话,我希望它被内联而不是required。否则,可以编译该模板,但显然不会以相同的名称出现在同一位置。因此,如果后者是唯一的选择,我需要一种方法将 require 的路径转换为新编译文件的路径。
【问题讨论】:
-
这是有效的哈巴狗标记,所以问题是别的。
-
@sean 你是对的。我添加了一些我发现可能有助于解决这个问题的代码和细节。