Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TypeScript 0.8.2导入内部模块中的Node.js模块_Node.js_Module_External_Typescript_Internal - Fatal编程技术网

TypeScript 0.8.2导入内部模块中的Node.js模块

TypeScript 0.8.2导入内部模块中的Node.js模块,node.js,module,external,typescript,internal,Node.js,Module,External,Typescript,Internal,好的,正如我所看到的,您希望在项目中使用内部模块。在TypeScript 0.8.1.1中有一个变通方法,您可以定义非导出模块(内部)并在其上添加导入。在0.8.2中,这似乎不再有效。我在这里看到的唯一选择是完全省略导入语法,并对节点模块使用标准require。我不知道这是否是个好主意,但请分享你的意见。我知道使用导入语法将使模块成为外部的(语言规范),但在0.8.1.1中不是这样,可能是错误 在TypeScript 0.8.1.1中,这在0.8.2中起作用,但在0.8.2中不再起作用: imp

好的,正如我所看到的,您希望在项目中使用内部模块。在TypeScript 0.8.1.1中有一个变通方法,您可以定义非导出模块(内部)并在其上添加导入。在0.8.2中,这似乎不再有效。我在这里看到的唯一选择是完全省略导入语法,并对节点模块使用标准require。我不知道这是否是个好主意,但请分享你的意见。我知道使用导入语法将使模块成为外部的(语言规范),但在0.8.1.1中不是这样,可能是错误

在TypeScript 0.8.1.1中,这在0.8.2中起作用,但在0.8.2中不再起作用:

import path = module('path');
import fs = module('fs');
module SomeNamespace.Controller {
    export class Index {
        ...
    }
}
我可以使用其他内部模块中文件顶部的引用语法引用包含上述代码的文件,并通常调用:

var ctrl = new SomeNamespace.Controller.Index;
ctrl.index();
在0.8.2中,这似乎是内部模块的唯一工作方式:

var path = require('path');
var fs = require('fs');
module SomeNamespace.Controller {
    export class Index {
        ...
    }
}

是否有其他可能将内部模块与Node.js模块混合使用?上述require用法是否有问题(它编译并运行正常…?

正常,此错误是由于TypeScript的版本造成的。 在TypeScript 0.8.1.1中,要导入外部模块,语法必须为:

export import <moduleName> = module(“<path>”);
export-import=module(“”);
这是最新版本的TypeScript中发现的错误,您可以返回到以前的版本或更改语法以使其与v0.8.1.1兼容。请记住,这是一个bug,在未来的版本中,您应该能够使用原始语法

这是此bug的官方线程:

我认为TypeScript 0.8.2使我们更接近规范

语法:

import x = module('SomeModule');
特别是TypeScript语言规范中的
外部模块引用

将使用以下方式导入内部模块:

///<reference path="SomeModule.ts" />
import x = SomeModule;
模块参考:

import Identifier = ModuleReference ;
ExternalModuleReference
ModuleName
module ( StringLiteral )
外部模块参考:

import Identifier = ModuleReference ;
ExternalModuleReference
ModuleName
module ( StringLiteral )

正如我所写的,在0.8.1.1导入工作正常,但在0.8.2中,整个模块在另一个内部模块中不再可用。我想这是正确的行为(使用导入使模块成为外部的),并将出现在未来的版本中?好的,那么是否有可能将我的内部模块与Node.js commonjs模块混合使用?一旦我将import x=module(…)添加到我的内部模块,它就会被视为一个外部模块。它们可以被设置为外部模块吗?在TypeScript中使用require的问题是它不会提供变量的类型信息。是的,我知道,但是通过import语句加载模块非常不方便,因为我必须提供TypeScript文件的完整路径。。。有什么解决方法吗?例如,用TypeScript编写Node.js框架的最佳方法是什么?我会使用外部模块。MyModule.ts将
导出类…
,我将使用
导入MyModule=module('MyModule')加载它们