Javascript 如何将npm包导入客户端文件

Javascript 如何将npm包导入客户端文件,javascript,npm,npm-package,Javascript,Npm,Npm Package,我正在尝试将导入到我的客户端.js文件。他们的文档说从“js搜索”中编写import*作为JsSearch

我正在尝试将导入到我的客户端
.js
文件。他们的文档说从“js搜索”中编写
import*作为JsSearch未捕获类型错误:无法解析模块说明符“js search”。相对引用必须以“/”、“/”或“./”开头。我花了很长时间试图配置一个相对路径,但是我最终发现
'js-search'
指的是包名,而不是目录。所以,我必须缺少一些允许我使用此导入行的依赖项?多谢各位

编辑:目录结构:

myproject
├── myproject
├── node_modules\js-search
└── myapp
    ├── static\myapp
    │            └── myapp.js
    └── templates\search
                    └── index.html

编辑:可能是因为我在本地主机上运行,而不是在服务器上运行吗?

您使用的NPM包可能是为node.js代码编写的包。
import*作为“JsSearch”中的JsSearch行用于node.js,在浏览器中无法单独工作

要在浏览器中运行这些类型的包,基本上需要使用transpiler对其进行转换。最常见的可能是网页包

有时,软件包中还包括专门针对浏览器的预构建或缩小版本。如果是这种情况,您可能会在
js search
目录中找到类似
something.min.js
的文件

js-search
看起来可能有这个,因为我在他们的存储库中看到了一个汇总配置文件。汇总是webpack的一种替代方法


如果不是这样的话,很遗憾,您必须进入非常疯狂的rabbithole,即构建工具。

您必须使用下面的
type=“module”
链接您的
myapp.js
文件


然后在
myapp.js
中,您必须使用
node\u模块的相对路径导入
js搜索
,因为您没有使用任何类似捆绑包的网页包。在你的
myapp.js
文件中,你可以像下面那样使用
js搜索

import*as JsSearch from./node_modules/js search/dist/esm/js search.js';
var theGreatGatsby={
isbn:'9781597226769',
标题:《了不起的盖茨比》,
作者:{
姓名:“F.斯科特·菲茨杰拉德”
},
标签:['book','inspirational']
};
var theDaVinciCode={
isbn:'03074275',
标题:“达芬奇代码”,
作者:{
姓名:“丹·布朗”
},
标签:['book','summary']
};
变量angelsAndDemons={
isbn:'074349346X',
标题:《天使与魔鬼》,
作者:{
姓名:“丹·布朗”,
},
标签:['book','summary']
};
var search=newjssearch.search('isbn');
search.addIndex(“标题”);
search.addIndex(['author','name']);
search.addIndex('tags'))
search.addDocuments([theGreatGatsby,TheDavincCode,Angels and Demons]);
console.log(search.search('The'));//[伟大的盖茨比,大卫法典]
console.log(search.search('scott'));//[了不起的盖茨比]
console.log(search.search('dan'));//[天使与恶魔,达芬奇密码]
console.log(search.search(‘神秘’);//[天使与恶魔,达芬奇密码]

您是否在客户端目录中进行了npm i js搜索?我的意思是,您可能有
后端
前端(或客户端)
目录,因此,如果从该目录导入
.js
文件,请确保在客户端目录中安装npm包。此包是否安装在节点模块目录中。如果不确定,请运行
npm安装--保存js搜索
,然后尝试work@lbragile这是一个Django应用程序,我已将其安装在node_modules目录中,我尝试将此目录放在项目根目录和static/myapp中。@AayushMall这是一个Django应用程序,我已将其安装在node_modules目录中,我尝试将此目录放在项目根目录和静态/myapp中。@RyanEom,我不熟悉Django文件夹结构,因此如果您想让我帮忙,您需要指出您的文件夹结构。是的!js search在
js search/dist/umd
下有一个
js search.min.js
文件。那么,我是否只需将此文件复制并粘贴到我的static/myapp文件夹中,然后从中导入?看看您是否可以实现这一点。我不知道
umd
模块是否与ecmascript导入兼容。如果没有,您可能需要通过常规的
标记来获取它。我认为导入在技术上是有效的,但是当我尝试使用文档中指出的库时,我得到了
未捕获(承诺)类型错误:JsSearch.Search不是构造函数。