Tag: commonjs

nodeJS require.paths解决问题

我正试图要求一个相对而且神秘的文件,下面正在发生 这适用于/Users/marcos/Desktop/Taper/lib/utils.js myPath = "/Users/marcos/Desktop/Taper/lib/./utils"; require(myPath); 这不,但它应该指向完全相同的文件: require.paths.unshift("/Users/marcos/Desktop/Taper/lib") require("./utils"); //Doesn't work with './' require("utils"); //Works Fine 任何人都知道为什么我不能使用./在这种情况下加载path require("path").resolve("/Users/marcos/Desktop/Taper/lib", "./utils") 结果是: "/Users/marcos/Desktop/Taper/lib/utils" 无论如何? 提前致谢

“错误:无法find模块”less“”Node.js模块加载偏好/订单/caching?

这就是情况…所以我创build了一个Node.js模块,作为一些Node.js模板引擎的接口, Shift.js 。 这包含在另一个Node.js模块Design.io (它指定了Design.io的package.json dependencies块)内。 Design.io监视文件的更改。 然后你build立一个应用程序,并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") 。 该string被编译。 在我的应用程序(当前工作目录),我已经安装了less量和手写笔: npm install less stylus 我遇到的问题是,在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 […]

是否可以在同一个Typescript项目中混合使用AMD和CommonJS模块

我试图将Durandal与使用Typescript的node.js服务器集成,以在服务器和客户端定义模块。 我遇到的问题是,Durandal强烈依赖RequireJS和AMD定义模块的方式,我不想在服务器端引入它,因为它使用RequireJS,所以我没有机会运行CommonJS-ish模块在客户端(默认为node.js)。 在棺材的最后一个钉子是,我发现没有办法定义哪些文件应该被编译为AMD模块,哪一个作为CommonJS由TSC – 这似乎是一个最简单的解决scheme。 我不认为分离客户端部分和服务器部分是一个选项,因为很多代码将是通用的两个部分。 所以,我的问题是三重的: 有没有在同一个Typescript项目中混合使用AMD和CommonJS模块的方法(最好使用NodejsTools) 如果没有,是否有办法强制Durandal使用CommonJS文件来加载视图/ viewmodels等等 如果这些都不可能的话,那么在node.js服务器上使用AMD模块是可能的(也是明智的 ) 任何想法,高度赞赏

import和const之间有什么区别,哪一个在commonjs中是首选的

我注意到使用const和import在使用es6语法和Babel的node.js应用程序中引用库的一些切换。 什么是首选的方法,使用const和import有什么区别? 假设你可能在许多文件/组件中导入相同的库。 常量 const React = require('react') import import React from 'react' 这里是每个的定义,但我仍然不确定使用哪个。 import 导入语句用于导入从外部模块,另一个脚本等导出的函数,对象或原语。 常量 const声明为一个值创build一个只读引用。 这并不意味着它所拥有的价值是不可变的,只是variables标识符不能被重新分配。

将模型存储在文件夹中,使用index.js来要求它们全部

我有一个体面的大小项目,我需要做一点调整。 我正在使用mongoose作为我的节点的ORM。 我想把我所有的mongoose模型放在一个名为“模型”的文件夹中。 我已经阅读,当我这样做,我可以把一个index.js文件在模型文件夹,这样将拉入所有模型,并将其存储。 app.js: … var mongoose = require('mongoose'); var models = require('./models')(mongoose); app.configure(function () { mongoose.connect(dbPath, function(err) { if (err) throw err; }); … }); // include models in my routes so I need access … 我正困在我需要做的index.js返回所有我的模型 index.js(这是我所尝试的,甚至没有closures) function Models(mongoose) { var Counters = require('./counters')(mongoose); var User = require('./user')(mongoose); var Token = require('./token')(mongoose); […]

你如何使用打字机编写节点模块?

所以,另一个问题(如何使用打字机导入模块)的一般答案是: 1)创build一个blah.d.ts定义文件。 2)使用: /// <reference path="./defs/foo/foo.d.ts"/> import foo = require("foo"); 关键的是,你需要在你的node_modules的某个地方加载文件foo.d.ts和foo.js; 和 NAME foo必须完全匹配。 现在… 我想要回答的问题是如何编写一个可以以这种方式导入的打字稿模块? 比方说,我有一个这样的模块: – xq/ – xq/defs/Qdts – xq/index.ts – xq/base.ts – xq/thing.ts 我想从base.ts中导出模块'xq',类'Base'和thing.ts中的'Thing'。 如果这是javascript中的一个节点模块,我的index.ts将如下所示: var base = require('./base'); var thing = require('./thing'); module.exports = { Base: base.Base, Thing: thing.Thing }; 让我们尝试使用类似的打字稿文件: import base = require('./base'); export module xq { export […]

是否有可能使JavaScript模块兼容NodeJS和RequireJS?

我一直在研究如何在NodeJS和浏览器应用程序中使用NodeJS require(显然是在NodeJS应用程序中)和RequireJS在Web浏览器环境中应用各种模块概念。 然后,我发现一些模块可能对客户端和服务器应用程序都有用,因此可以重复使用。 如何开发模块以便与这两种环境兼容? 一个是同步的,一个是asynchronous的。 我的第一个想法是利用asynchronous语法,然后为NodeJS定义一个自定义模块,它只是同步调用asynchronouscallback。 但是,如果没有先使用NodeJS同步callback,RequireJS仿真器将如何被包含到跨环境模块中呢?

在ES6的`import`语法中,模块是如何精确计算的?

假设我们有四个模块, A , B , C和D 在模块A : console.log("A evaluated") function AClass { console.log("A constructor") } var aObj = new AClass() export default aObj; 在模块B : import aObj from A export default "B" 在模块C : import aObj from A export default "C" 在模块D : import b from B import c from C import aObj from […]

如何在nodejs中unit testing“私有”效用函数

我目前正在为nodejs应用程序编写一些testing。 假设我有一个像这样的模块: module.exports = function myModule(moduleParam) { var someVar; …. …. function helper(param) { return param + someVar; } return { doSomething: function (bar) { …. …. var foo = helper(bar); …. …. } }; }; 假设“帮助者”function只在模块中有用,不应该暴露在外面。 testing它的“最佳实践”是什么? (当然,我可以将doSomething函数作为一个整体进行testing,但是这样,“帮助”函数在特定情况下以“黑盒”方式进行testing)。 我使用nodeunit作为testing框架,但是我可以根据需要进行更改。

NodeJS模块vs类

对我来说,类与NodeJS(CommonJS)模块非常相似。 你可以有很多,他们可以重复使用,他们可以使用对方,他们通常是一个每个文件。 是什么使得模块与类不同? 你使用它们的方式不同,命名空间的差异是显而易见的。 除此之外,他们对我来说看起来也是非常相似的,或者我可能在这里看不到明显的好处。