相关疑难解决方法(0)

node.exports与Node.js中的导出

我在Node.js模块中找到了以下合同:

module.exports = exports = nano = function database_module(cfg) {...}
Run Code Online (Sandbox Code Playgroud)

我不知道什么之间的不同module.exportsexports为什么都被用在这里.

javascript commonjs node.js

701
推荐指数
10
解决办法
23万
查看次数

如何从node.js中的文件到另一个文件获取变量

这是我的第一个文件:

var self=this;
var config ={
    'confvar':'configval'
};
Run Code Online (Sandbox Code Playgroud)

我想在另一个文件中使用这个配置变量,所以我在另一个文件中做的是:

conf = require('./conf');
    url=conf.config.confvar;
Run Code Online (Sandbox Code Playgroud)

但它给了我一个错误.

TypeError: Cannot read property 'confvar' of undefined
Run Code Online (Sandbox Code Playgroud)

请建议我该怎么办?

node.js

43
推荐指数
2
解决办法
6万
查看次数

Node.js ES6如何从模块中导出类?

我正在尝试从Node.js 6.2.0中的CommonJS模块导出ES6类

class MyClass{
    //class contents here
}

exports = MyClass;
Run Code Online (Sandbox Code Playgroud)

然后在另一个模块中导入它:

var MyClass = require('/path/to/module.js')
var instance = new MyClass();
Run Code Online (Sandbox Code Playgroud)

但是我得到以下异常:

TypeError: MyClass is not a constructor
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

请注意,我没有使用Babel/Tranceur,它是纯粹的JS,在最新的Node 6.2.0中实现,根据Kangax,93%实现了ES6.

//编辑:这对export和module.exports来说不是问题.虽然单独使用导出,但我得到了一些__proto__set的对象.

javascript commonjs node.js ecmascript-6

11
推荐指数
1
解决办法
2万
查看次数

如何在TypeScript中正确导出和导入模块

注意: 我知道有很多关于这个主题的帖子,我已经回顾了很多已经没有成功的帖子(请参阅本文底部的参考资料).

我正在尝试使用Visual Studio Code在TypeScript中运行一个非常简单的测试,我在一个文件中声明一个类并将其导入另一个文件.但是,我继续遇到一个问题,我导入的文件无法识别从其他文件导出的类的方法.

我此时收到的确切错误消息是:

[ts]属性'getFirstName'在类型'typeof"module-test/src/OtherClass"'上不存在.

[ts]属性'getLastName'在类型'typeof"module-test/src/OtherClass"'上不存在.

我正在使用Node 9.3.0和TypeScript 2.6.2.

非常感谢任何人都可以提供给我的任何指导!

main.ts

import * as Other from "./OtherClass";

class myApp
{
  public async start()
  {
    console.log("Starting application");
    
    try
    {
      let firstName = await Other.getFirstName();
      console.log("First Name: " + firstName);
      let lastName = await Other.getLastName();
      console.log("Last Name: " + lastName);
    }
    catch (error)
    {
      console.error("Unable to get name: " + error)
    }
    
    console.log("Ending application");
  }
}

const app = new myApp();
app.start();
Run Code Online (Sandbox Code Playgroud)

OtherClass.ts

class Other
{
  getFirstName(): string
  {
    return …
Run Code Online (Sandbox Code Playgroud)

javascript node.js typescript

8
推荐指数
1
解决办法
3918
查看次数

使用ES5语法在Node中混合使用默认导出和命名导出

我在导出/导入模块方面的所有经验都来自使用export和的ES6中import,您可以在其中执行类似的操作,以使单个模块导出默认函数以及单独的命名函数。

// module.js
export default mainFunction
export { namedFunction }

// main.js
import mainFunction from 'functions'
mainFunction()

import { namedFunction } from 'function'
namedFunction()
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何使用module.exports和使用ES5样式导入来做到这一点require。据我了解,我可以导出一个默认值:

// module.js
module.exports = function mainFunction() {}

// main.js
const mainFunction = require('module.js')
Run Code Online (Sandbox Code Playgroud)

或者我可以创建命名的导出:

// module.js
module.exports = {
  namedFunction: function() {}
}

// main.js
const namedFunction = require('module.js').namedFunction
Run Code Online (Sandbox Code Playgroud)

但是我不能两者都做。我以为可以这样命名出口之一“默认”,但它不起作用

// module.js
module.exports = {
  default: function() {},
  namedFunction: function() {}
}

// main.js
const mainFunction = …
Run Code Online (Sandbox Code Playgroud)

javascript node.js ecmascript-5 node-modules

5
推荐指数
2
解决办法
2720
查看次数

导入与在节点中使用Babel的要求

我想在一个文件中导入一个类:

"use strict";
import models from "../model";
class Foo {
    bar() {
    }
}
export default new Foo();
Run Code Online (Sandbox Code Playgroud)

它在我使用import时有效,例如:

import Foo from "./foo";
console.log(Foo.bar); // [Function bar]
Run Code Online (Sandbox Code Playgroud)

问题是,使用require执行它会给我未定义:

var Foo = require("./foo");
console.log(Foo.bar); // undefined
Run Code Online (Sandbox Code Playgroud)

而Foo变量似乎是一个空类.为什么会这样?这是怎么回事?

javascript node.js ecmascript-6 babeljs

4
推荐指数
1
解决办法
690
查看次数