我在课堂上要求玉器。如果我将我的模块放入libs文件夹(在node_moduleS之外),但是当我进入node_modules时,jadeify转换永远不会在我的 require('./ views / index.jade')上调用。我已经调试了jadeify的来源,以验证这个require()没有通过它。
index.jade
p= data.name
p
| console.log("urzuleibailadu")
子模块
function Child () {
console.log('Dirname: ' + __dirname);
Child.super_(this);
console.log('Called new child()');
this.pages = {};
this.settings = {
templates: {
//index: ''
index: require('./views/index.jade')
}
};
}
这是项目结构(libs / child和node_module / child包含完全相同的文件):
- browserify
-- libs
--- child
---- views
----- index.jade
---- index.js
-- node_modules
--- child
---- views
----- index.jade
---- index.js
-- main.js
通过此修改,在 main.js 中,一切正常:
Child = require('./libs/child')
这会破坏所有,导致 jade 被解析为js(浏览器抛出数据未定义,来自p= data.name
)。
Child = require('child')
有什么想法吗?非常感谢。
答案 0 :(得分:2)
从 substack 获得answer:
这种行为是故意的,因为它允许您在应用程序或库中进行彻底的配置更改,而不必担心您的更改可能会如何影响您依赖的模块,而这些模块不会针对接口或变换可能带来的假设进行编写。
您应该使用自己的package.json配置模块以应用转换:
{
"browserify": {
"transform": [ "jadeify" ]
}
}
或者更好的是,您的软件包可以指定自己的依赖项,以便以一种孤立的方式管理随时间推移逐渐变化的更容易:
{
"browserify": {
"transform": [ "jadeify" ]
},
"dependencies": {
"jadeify": "^2.3.0"
}
}