Tag: 需要

NodeJs:TypeError:require(…)不是一个函数

我想要一个文件,然后传递给一个变种。 我正在按照这个教程创build一个authentication系统。 在编写server.js文件并尝试编译后,我得到了一个bson错误,因此我改变了需要在mongoose中发布版本的那一行。 这里是我的代码和错误: server.js require('./app/routes')(app, passport); 错误 require('./app/routes')(app, passport); ^ TypeError: require(…) is not a function at Object.<anonymous> (d:\Node JS learning\WorkWarV2\server.js:38:24) at Module._compile (module.js:434:26) at Object.Module._extensions..js (module.js:452:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Function.Module.runMain (module.js:475:10) at startup (node.js:117:18) at node.js:951:3 Process finished with exit code 1 我已经读了这通常意味着requireJS没有得到正确加载,但我不知道为什么或如何解决它。 编辑由于评论: 如问, 这里是console.log(require);的结果console.log(require);

解释为什么构造函数注入比其他选项更好

在Pro Spring 3 Book中,第4章 – 介绍IOC和DI在Spring中 – 第59页,在“Setter Injection vs. Constructor Injection”一节中, 包含Spring,提供了一种机制来确保在使用Setter Injection时定义所有的依赖关系,但是通过使用Constructor Injection,可以以容器不可知的方式声明对依赖关系的要求“ 你能用例子来解释吗?

如何在node.js中的“require”之后移除模块?

比方说,我需要一个模块后,做一些事情如下: var b = require('./b.js'); — do something with b — 然后我想拿走模块b(即清理caching)。 我怎么能做到这一点? 原因是我想在不重新启动节点服务器的情况下dynamic加载/删除或更新模块。 任何想法? ——-更多——–根据build议删除require.cache,它仍然不起作用… what I did are few things: 1) delete require.cache[require.resolve('./b.js')]; 2) loop for every require.cache's children and remove any child who is b.js 3) delete b 但是,当我打电话给b,它仍然在那里! 它仍然可以访问。 除非我这样做: b = {}; 不知道这是否是一个好办法。 因为如果后来,我再次需要('./b.js'),而b.js已被修改。 它会需要旧的cachingb.js(我试图删除),还是新的? ———–更多发现————– 好。 我做更多的testing,并与代码玩…这里是我发现: 1) delete […]

NodeJs需要('./ file.js')问题

我有问题,包括在我的NodeJs项目中执行的文件。 我有两个文件在同一个目录中: a.js var test = "Hello World"; 和 b.js require('./a.js'); console.log(test); 我用node b.js执行b.js并得到错误ReferenceError: test is not defined 。 我已经浏览了文档http://nodejs.org/api/modules.html#modules_file_modules 我错过了什么? 提前致谢。

Ruby NOT Rails中是否有复数forms的函数?

我写了一些Ruby代码,而不是Rails,我需要处理这样的事情: found 1 match found 2 matches 我已经安装了Rails,所以也许我可以在脚本的顶部添加一个require子句,但是有谁知道一个将string复数化的RUBY方法? 有没有一个类,我可以要求,可以处理这个如果脚本不是Rails,但我已经安装了Rails? 编辑:所有这些答案都很接近,但我检查了它为我工作的一个。 在编写Ruby而不是Rails代码时,请尝试以下方法作为帮助程序: def pluralize(number, text) return text.pluralize if number != 1 text end

使用Webpack基于环境的条件构build

我有一些发展的东西 – 例如嘲笑,我不想膨胀我的分布式构build文件。 在RequireJS中,你可以在一个插件文件中传递一个configuration文件,并根据这个configuration文件需要一些东西。 对于webpack来说,似乎没有办法做到这一点。 首先为一个环境创build一个运行时configuration,我已经使用resolve.alias来根据环境重新指定一个require,例如: // All settings. var all = { fish: 'salmon' }; // `envsettings` is an alias resolved at build time. module.exports = Object.assign(all, require('envsettings')); 然后当创buildwebpackconfiguration我可以dynamic地分配哪个文件envsettings指向(即webpackConfig.resolve.alias.envsettings = './' + env )。 不过,我想做一些事情: if (settings.mock) { // Short-circuit ajax calls. // Require in all the mock modules. } 但是,如果环境不是模拟的,显然我不想在这些模拟文件中构build。 我可能会手动重新使用所有需要的存根文件再次使用resolve.alias – 但有没有一种方法,感觉lesshacky? […]

节点式的需要在浏览器中的JavaScript?

浏览器中是否有任何JavaScript库提供与Node require的相同的灵活性/模块性/易用性? 要提供更多的细节: require的原因是如此之好,它是: 允许从其他位置dynamic加载代码(在我看来,在风格上更好,而不是链接HTML中的所有代码) 它为构build模块提供了一致的界面 模块很容易依赖于其他模块(所以我可以编写一个需要jQuery的API,这样我就可以使用jQuery.ajax() 加载的javascript是有作用域的 ,这意味着我可以加载var dsp = require("dsp.js"); 我可以访问dsp.FFT ,这不会干扰我的本地var FFT 我还没有find一个有效的库。 我倾向于使用的解决方法是: coffeescript-concat – 很容易要求其他的js,但是你必须编译它,这意味着它对于快速开发来说不是那么好(比如构buildAPI in-test) RequireJS – 它很stream行,直接,解决1-3,但是缺less范围是一个真正的破产 (我相信head.js是相似的,因为它缺乏范围,但我从来没有任何机会使用它。同样, LABjs可以加载, .wait()可以.wait()依赖关系问题,但是它仍然没有做范围界定) 据我所知,似乎有很多的dynamic和/或asynchronous加载的解决scheme,但他们往往有相同的范围问题,只是从HTML加载js。 更重要的是,我想要一种方法来加载JavaScript,根本不污染全局名称空间,但仍然允许我加载和使用库(就像节点的要求一样)。 编辑(我的答案):由于写这个,我已经广泛使用了RequireJS (现在有更清晰的文档)。 在我看来,RequireJS确实是正确的select。 我想澄清这个系统对那些和我一样困惑的人是如何工作的: 你可以在日常开发中使用require 。 一个模块可以是一个函数(通常是一个对象或一个函数)返回的任何东西,并且作为参数作用域。 您也可以使用r.js将您的项目编译成单个文件进行部署(实际上,即使require可以并行加载脚本,这几乎总是更快)。 RequireJS和node-style之间的主要区别在于像browserify(由tjamesonbuild议的一个很酷的项目)使用的是模块的devise和要求的方式: RequireJS使用AMD(asynchronous模块定义)。 在AMD中, require需要一个模块列表(javascript文件)来加载和callback函数。 当它加载了每个模块时,它将调用每个模块的callback作为callback的参数。 因此,它确实是asynchronous的,因此非常适合于networking。 节点使用CommonJS。 在CommonJS中, require是一个阻塞调用,它加载一个模块并将其作为一个对象返回。 这适用于Node,因为文件是从文件系统中读取的,速度足够快,但在networking上效果不佳,因为同步加载文件可能需要更长的时间。 在实践中,许多开发者在看到AMD之前就已经使用了Node(以及CommonJS)。 另外,许多库/模块是为CommonJS编写的(通过向导出对象添加东西)而不是AMD(通过从define函数返回模块)。 因此,许多Node-turned-Web开发人员想要在Web上使用CommonJS库。 这是可能的,因为从<script>标记加载被阻止。 像browserify这样的解决scheme采取CommonJS(节点)模块,并包装起来,所以你可以包含脚本标签。 因此,如果您正在为Web开发自己的多文件项目,我强烈build议RequireJS,因为它是真正的Web模块系统(尽pipe在公平的披露中,我发现AMD比CommonJS更自然)。 最近,这个区别变得不太重要,因为RequireJS现在允许你基本上使用CommonJS语法。 另外,RequireJS可以用来在Node中加载AMD模块(尽pipe我更喜欢node-amd-loader […]

node.js中的require()如何工作?

我试过这个: // mod.js var a = 1; this.b = 2; exports.c = 3; // test.js var mod = require('./mod.js'); console.log(mod.a); // undefined console.log(mod.b); // 2 console.log(mod.c); // 3, so this === exports? 所以我形象,要求()可能是这样实现的: var require = function (file) { var exports = {}; var run = function (file) { // include "file" here and run […]

Node.js“需要”function和参数

当我做: lib = require('lib.js')(app) app实际上是通过传递? 在lib.js中: exports = module.exports = function(app){} 似乎没有,因为当我尝试做不仅仅是(app) ,而是做: lib = require('lib.js')(app, param2) 和: exports = module.exports = function(app, param2){} 我没有得到params2 。 我试图通过执行debugging: params = {} params.app = app params.param2 = "test" lib = require("lib.js")(params) 但在lib.js,当我尝试JSON.stringify我得到这个错误: "DEBUG: TypeError: Converting circular structure to JSON"

使用Boost库程序选项的必需和可选参数

我正在使用Boost程序选项库来parsing命令行参数。 我有以下要求: 一旦提供“帮助”,所有其他选项都是可选的; 一旦“帮助”没有提供,所有其他选项是必需的。 我如何处理这个? 这是我的代码处理这个,我发现它是非常多余的,我认为必须有一个容易做的,对吧? #include <boost/program_options.hpp> #include <iostream> #include <sstream> namespace po = boost::program_options; bool process_command_line(int argc, char** argv, std::string& host, std::string& port, std::string& configDir) { int iport; try { po::options_description desc("Program Usage", 1024, 512); desc.add_options() ("help", "produce help message") ("host,h", po::value<std::string>(&host), "set the host server") ("port,p", po::value<int>(&iport), "set the server port") ("config,c", […]