当您使用import * as d3 from 'd3';
时,您需要的d3软件包仅在您的node_modules
本地可用,因此不适用于浏览器。这就是依赖性错误(比如webpack),他们通过代码读取了所有必需的软件包,并将它们包含在构建输出中。但是,既然你说你是Node.js和TypeScript的新手,我必须警告你,使用这些工具配置一个项目可能会非常困难,学习曲线也相当陡峭。对您的项目需求进行研究,如果您发现某些时候需要它,请开始学习如何使用webpack ASAP,因为稍后调整您的代码可能会更加痛苦。
另一种选择是以旧式方式包含jQuery和D3.js(使用普通脚本标记)。在这种情况下,为了使TypeScript识别jQuery和D3,即使它们是分开加载的,我们使用我们所说的“环境声明”。这些声明公开了这些库的全局变量下的定义,因此TypeScript假定全局变量d3
或$
将在运行时可用,并将保存我们想要的库的API。因此不需要import
。
谢天谢地,“@ types/jquery”和“@ types/d3”已包含这些全局声明。对于D3请确保您正在安装v4的定义npm i --save-dev @types/[email protected]
使用vanilla依赖项可能需要的另一个步骤是对您的tsconfig.json文件进行一些调整。下面是一个例子:以module
和moduleResolution
和pick the options,更好地适合你
{
"compileOnSave": false,
"buildOnSave": false,
"compilerOptions": {
"target": "es5",
"module": "amd",
"moduleResolution": "classic",
"sourceMap": true,
"baseUrl": ".",
"types": [
"d3",
"jquery"
]
}
}
留意。还请注意types
选项,使TypeScript包括来自@types/d3
和@types/jquery
的环境声明。顺便说一句,这些选项适用于TypeScript 2.0。
说实话,我很难说出你需要做什么才能让每件事都能正常工作,因为每个环境都需要不同的设置。但我希望我至少能让你朝着正确的方向自己找出其他问题。祝你好运!
嗨snolflake,非常感谢您花时间帮助我。事实上,你把我推向了正确的方向,并使得许多方面更加清晰。感谢你,它正在运行=)。非常感谢! – Chris