gpt4 book ai didi

node.js - 无法导入lodash

转载 作者:太空宇宙 更新时间:2023-11-04 00:50:20 24 4
gpt4 key购买 nike

我是 TypeScript 新手,在尝试加载 lodash 时遇到问题。

这是我的代码:

///<reference path="../../typings/lodash/lodash.d.ts"/>    
///<reference path="../interfaces/IScheduler.ts"/>

import _ = require('lodash');

module MyModule {

export class LeastUsedScheduler implements IScheduler {
/// CODE HERE
}
}

我尝试将导入行替换为:

import * as _ from lodash;

在这两种情况下我得到:

"error| Cannot find name 'IScheduler'."

当我删除导入指令时,它可以完美编译,但 _ 在运行时未定义。

我也尝试将导入放入模块中,但没有成功。

很抱歉,这一定是一个非常愚蠢的问题,但我无法弄清楚。

谢谢

编辑:

我明白了这个问题。引用 lodash 的类型在作用域中创建了变量 _。这就是为什么它在没有导入行的情况下编译良好的原因。问题是引用打字并没有真正导入 lodash。这就是它在运行时失败的原因。

当我导入 lodash 时,编译失败,因为 lodash 已经在范围内。

感谢您的支持。

最佳答案

我并不是 100% 明白这个问题,但您可以尝试以下操作并让我知道进展如何吗?

///<reference path="../../typings/lodash/lodash.d.ts"/>
///<reference path="../interfaces/IScheduler.ts"/>

import _ = require("lodash");

export class LeastUsedScheduler implements IScheduler {
doSomething(){
_.each([],function name(parameter) {
// ...
});
}
}

编译后看起来像:

var _ = require("lodash");
var LeastUsedScheduler = (function () {
function LeastUsedScheduler() {
}
LeastUsedScheduler.prototype.doSomething = function () {
_.each([], function name(parameter) {
throw new Error("Not implemented yet");
});
};
return LeastUsedScheduler;
})();
exports.LeastUsedScheduler = LeastUsedScheduler;

如果您导入模块 import _ = require("lodash"); 但您不使用它,TypeScript 将删除导入(因此我添加了 doSoemthing 方法)。

更新:为什么它不起作用?

问题在于 module 关键字用于声明内部模块。同时代码正在加载外部模块。您应该避免混合内部和外部模块。您可以在http://www.codebelt.com/typescript/typescript-internal-and-external-modules/了解更多关于内部和外部模块之间的区别。 .

此外,如果您使用内部模块,请避免使用 module 关键字,因为它已被弃用,而应该使用 namespace 关键字。

关于node.js - 无法导入lodash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32897567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com