【发布时间】:2018-09-25 21:10:48
【问题描述】:
所以我有一个似乎使用版本控制系统的节点模块。使用 nodejs 我只是使用了
const Package = require('package-name').V1;
没有问题。但是 Typescript 不喜欢 .V1 所以我使用
import { Package } from 'package-name';
这很好,但打字稿输出到 javascript 是
const package_name_1 = require("package-name");
这意味着package_name_1 的任何函数或属性都未定义,因为模块似乎没有加载V1.js 文件(我假设它是这样工作的......)
所以我尝试了
import * as Package from 'package-name';
但它输出的 javascript 和以前一样..
我使用的包的实际文件夹结构是
-node_modules
--package-name
---client
----v1
----v1.js
v1.js 文件看起来像
var PackageV1 = {}
PackageV1.CONSTANTS = require('./v1/constants');
PackageV1.Request = require('./v1/request');
PackageV1.Session = require('./v1/session');
...
module.exports = PackageV1;
当然是这样的
const Package = require('package-name.V1');
不工作
错误:找不到模块'package-name.V1'
我怎样才能使用打字稿方法要求这个V1.js文件/目录?
【问题讨论】:
-
你具体说的是什么包?我希望
import { Package } from 'package-name';中的Package有一个名为V1的属性,您可以使用它来访问模块成员,但我不知道这些类型是如何编写的 -
当然
import { V1 } from 'package-name';甚至import { V1 as Package } from 'package-name';取决于您自己的喜好。顺便说一句,以前没有什么能阻止你使用类似的const { V1: Package } = require('package-name');,因为import构造使用一种“解构”形式,这种形式通常在现代 JavaScript 环境中可用。
标签: javascript node.js typescript import