Javascript 从'导入;lodash es/lodash.js';过去工作过。现在它不';但我没有';我不能改变任何事情

Javascript 从'导入;lodash es/lodash.js';过去工作过。现在它不';但我没有';我不能改变任何事情,javascript,import,lodash,Javascript,Import,Lodash,我做了一个小测试项目,以确保我知道如何在浏览器环境中使用lodash: /* File in directory: /ESModule/App.js */ // error message import _ from 'lodash-es/lodash.js'; // relative path works // import _ from '../node_modules/lodash-es/lodash.js'; const first = [1]; const second = [2];

我做了一个小测试项目,以确保我知道如何在浏览器环境中使用lodash:

/* File in directory: /ESModule/App.js */
// error message
import _ from 'lodash-es/lodash.js';
// relative path works
// import _ from '../node_modules/lodash-es/lodash.js';
const first = [1];
const second = [2];
const combined = _.union(first, second);

document.querySelector(`p`).textContent = combined;
当时它工作得很好,但是现在我在一个月后再次访问它,我得到了这个错误:“uncaughttypeerror:错误解析模块说明符:lodash es/union”。从那以后,我就再也没有接触过这个项目,对我的环境唯一的改变就是我更新了NodeJS

不确定这是否有帮助,但我的package.json依赖项(本地安装)中有lodash es,而且我使用的是Windows 10。我还安装了Webpack,这样我可以在一个单独的目录中测试缩小项目,但我不知道为什么以某种方式编写导入路径突然停止了工作,这让我很困扰。我最近注意到,我在其他更复杂的项目上也遇到了同样的问题,我不想在未来使用类似这样的相对路径:

import someModule from '../../../../node_modules/package-name/file.js';
这什么时候行得通

import someModule from 'package-name/file.js';
你知道是什么导致了这个问题吗

编辑: 我刚刚意识到,我还测试了个人进口的Lodash

import union from 'lodash-es/union';
const first = [1];
const second = [2];
const combined = union(first, second);
document.querySelector(`p`).textContent = combined;
在过去,即使没有以.js结束路径,这种方法也会起作用。这些方法都给了我相同类型的错误:

import _ from 'lodash-es';
import _ from 'lodash-es/lodash';
import _ from 'lodash-es/lodash.js';
import union from 'lodash-es/union';
import union from 'lodash-es/union.js';
import {union} from 'lodash-es';
未捕获的TypeError:解析模块说明符时出错:[此处指定的路径]

import _ from '/node_modules/lodash-es/lodash.js';
import union from '../node_modules/lodash-es/union.js';
import union from '/node_modules/lodash-es/union.js';
现在只有相对路径或特定绝对路径可以工作,所以至少我知道我可能已经正确安装了它。正如我前面提到的,所有的代码过去都可以工作,但是没有对其进行更改,也没有向node_模块添加或从中删除,现在就不行了

我忘了提到的一件事是,我正在使用Live Server扩展,通常在启动时它默认为端口5500,但最近它在查找可用端口时遇到了问题,并且使用了像5522和5909这样的数字。最近,我在下载各种类型的文件时也遇到问题,例如,我尝试下载一个新的NodeJS安装文件,但出现以下错误:

C:/Users/DANIEL~1/AppData/Local/Temp/D1JF2y30.msi.part could not be saved, because the source file could not be read.
也许我的机器有问题,导致我的浏览器和LS出现问题

编辑:我尝试在NodeJS中使用lodash,而不是在带有liveserver的浏览器中进行测试,仅使用包路径
constunion=require('lodash/union')就可以很好地工作


编辑:我刚刚注意到,如果我尝试使用Webpack缩小,我可以毫无问题地使用包路径,并且我不需要以.js结尾。也许我以前不清楚,但我在没有使用Webpack的情况下遇到了包路径问题。使用“lodash es/lodash.js”中的
import_uuuu是否奇怪
没有Webpack甚至可以在第一时间工作?

因为您要导入整个库,您只需执行以下操作:

从“lodash es”导入

只有在指定要导入的特定函数时才需要斜杠符号。(由于导入
会带来数百个函数,因此建议使用这种方法。)

import union'lodash es/union'

最好的方法是只安装一个方法并导入该方法

npm安装--保存lodash.union

从“lodash es.union”导入联合体


有关更多详细信息,请参阅。

将整个lodash导入为:

字体/角度:

import * as _ from 'lodash-es';

...
const combined = _.union(first, second);
ES:

进口方式:

import {union} from 'lodash-es';

...
const combined = union(first, second);

您是否已删除您的
node\u modules
文件夹并重新安装?如果这不起作用,那么您是否检查了lodash更改日志以查看他们是否移动或重命名了导出?我尝试了删除并重新安装,但这没有改变任何内容。这仍然失败:
import uu来自'lodash es/lodash.js'但这仍然有效:
从“../node_modules/lodash es/lodash.js”导入从“/node_modules/lodash es/lodash.js”导入有效,所以我想我不需要担心长的相对路径,它应该是从“lodash es”导入的;这个方法只适用于TypeScript/Angular,这在问题中没有提到。我明白你关于节省空间的意思,但我认为你的意思是从'lodash es'导入{union}因为
'lodash-es/union'
使用导出默认值。因为我计划在未来的大型项目中使用许多函数,所以我用uu测试了lodash,在他们的页面上说,许多函数都重用了相同的代码。ES方法是我最初做的,刚才我尝试了第三种方法。我仍然得到
未捕获类型错误:错误解析模块说明符:lodash es
您尝试了什么?第三条路是哪条?你试过“lodash es”的相对路径吗?我的意思是我试过从“lodash es”导入
从“lodash es”导入{union}。我编辑这个问题是为了指出,如果我与Webpack捆绑并使用其输出,我可以使用包路径,但我感到困惑,因为在没有Webpack的情况下,只使用包路径对我有效,而他们怎么会突然不起作用。我一直在研究这个问题,看起来真正的“问题”是,如果没有捆绑机,它本来就不应该工作。
import {union} from 'lodash-es';

...
const combined = union(first, second);