节点全局模块和require()中的include是否有区别?

时间:2014-11-17 07:34:42

标签: node.js less

我一直在尝试在节点中运行一个小的js脚本。它有一个声明var less = require('less');。我确保nodenpmless在全球范围内可用。尽管如此,当我在node上运行lessCompile.js时,我收到'module not found'错误。为什么?

这是我的命令行序列。

C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\node_tut>npm install -g less
C:\Users\stumma\AppData\Roaming\npm\lessc -> C:\Users\stumma\AppData\Roaming\npm\node_modules\less\bin\lessc
less@2.0.0 C:\Users\stumma\AppData\Roaming\npm\node_modules\less
├── graceful-fs@3.0.4
├── mime@1.2.11
├── promise@6.0.1 (asap@1.0.0)
├── mkdirp@0.5.0 (minimist@0.0.8)
├── source-map@0.1.40 (amdefine@0.1.0)
└── request@2.47.0 (caseless@0.6.0, aws-sign2@0.5.0, forever-agent@0.5.2, json-stringify-safe@5.0.0, oauth-sign@0.4.0, stringstream@0.0.4, tunnel-agent@0.4
.0, node-uuid@1.4.1, mime-types@1.0.2, qs@2.3.3, combined-stream@0.0.7, tough-cookie@0.12.1, form-data@0.1.4, http-signature@0.10.0, hawk@1.1.1, bl@0.9.3)

C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\node_tut>less
Missing filename ("less --help" for help)

C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\node_tut>node lessCompile.js

module.js:340
    throw err;
          ^
Error: Cannot find module 'less'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\node_tut\lessCompile.js:1:74)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)

ADD :我的lessCompile.js代码:

var less = require('less');

less.render('.class { width: (1 + 1) }', function (e, output) {
  console.log(output.css);
});

1 个答案:

答案 0 :(得分:2)

require()适用于全局模块。

C:\Users\stumma\AppData\Roaming\npm添加到您的Windows PATH环境变量中。

这是节点全局模块的存储。目前,您在PATH

中没有此目录

之后运行npm include less,使其不仅可以作为命令行可执行文件,而且可以用于require