Lan*_*ard 9 module require commonjs node.js
这是情况......所以我创建了一个Node.js模块,作为一些Node.js模板引擎Shift.js的接口.它包含在另一个Node.js模块Design.io中(它指定了Design.io的package.json dependencies
块).Design.io监视文件以进行更改.
然后你构建一个应用程序和require('design.io')
.您还可以将Less和Stylus安装到项目中.
这样,当您保存.less
或.styl
文件时,会调用一系列方法:
require("design.io")
收到文件系统事件的通知.然后Design.io调用require('shift').render(string, extension, callback)
.Shift.js然后调用require(moduleFor(extension)) # require("less")
.字符串已编译.在我的应用程序(当前工作目录)中,我安装了较少的手写笔:
npm install less stylus
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,在Shift.js模块中调用的第3步中,我得到如下错误:
Error: Cannot find module 'less'
at Function._resolveFilename (module.js:334:11)
at Function._load (module.js:279:25)
at Module.require (module.js:357:17)
at require (module.js:368:17)
at Less.engine (/Users/viatropos/Documents/git/plugins/design.io/node_modules/shift/lib/shift/less.js:6:14)
at Less.render (/Users/viatropos/Documents/git/plugins/design.io/node_modules/shift/lib/shift/less.js:18:21)
at /Users/viatropos/Documents/git/plugins/design.io/node_modules/shift/lib/shift.js:69:23
at /Users/viatropos/Documents/git/plugins/design.io/node_modules/async/lib/async.js:118:13
at Object.forEachSeries (/Users/viatropos/Documents/git/plugins/design.io/node_modules/async/lib/async.js:134:9)
at Object.render (/Users/viatropos/Documents/git/plugins/design.io/node_modules/shift/lib/shift.js:78:31)
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么会发生这种情况?我认为你可以动态地要求模块中的库,只要它们被安装在某个地方 ......我错过了什么?
目标是像Shift.js这样的库不必定义每个单独的依赖package.json
...对于"模板引擎的接口"库,这将需要太多的依赖,应用程序可能永远不会使用.
谢谢你的帮助,希望有点清楚.
小智 25
当您npm install foo
,foo
模块安装在node_modules
当前工作目录中指定的目录中.
安装此shift
库时,它只在其自己的 node_modules
目录中或在其中一个全局目录require.resolve()
搜索中查找要求的模块.
这就是解决问题的简单方法:
npm install -g less
Run Code Online (Sandbox Code Playgroud)
然后,该库对您计算机上的所有Node.js代码全局可见,而不是仅对当前工作目录中的代码可见.
或者,如果您只想shift
看到它,那么执行以下操作:
npm install shift
cd node_modules/shift
npm install less
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20383 次 |
最近记录: |