为啥我需要使用已安装库的相对路径?

Posted

技术标签:

【中文标题】为啥我需要使用已安装库的相对路径?【英文标题】:Why I need to use a relative path to an installed library?为什么我需要使用已安装库的相对路径? 【发布时间】:2021-02-20 12:30:04 【问题描述】:

背景: 我正在尝试将 Editor.js 库用于个人项目

Editor.js documentation

有项目目录:

有 package.json :


  "name": "quicknoteapp",
  "version": "1.0.0",
  "description": "",
  "main": "myApp.js",
  "scripts": 
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "electron ."
  ,
  "author": "",
  "license": "ISC",
  "devDependencies": 
    "@editorjs/editorjs": "^2.19.0",
    "electron": "^10.1.5",
    "menubar": "^9.0.1"
  

我的index.html

<script type="module" src="main.js"></script>

我从main.js 导入我的库:

import EditorJS from '@editorjs/editorjs';

最后,控制台出现了这个错误:

TypeError: Module specifier, '@editorjs/editorjs' does not start with "/", "./", or "../". Referenced from file:///Users/charles/Desktop/QuickNoteApp/main.js

好的,我需要在导入模块时添加相对路径。但我不喜欢这样做。 为什么我需要使用已安装库的相对路径?

为什么我不能像文档那样做?在项目设置期间我做错了什么?我认为将路径添加到每个脚本是不正常的。如果没有,为什么要使用 npm... 并得到一个 node_module 文件夹。

【问题讨论】:

【参考方案1】:

NPM 旨在管理 Node.js 的包,而不是 Web 浏览器。

Web 浏览器不是 Node.js。它们不支持 Node.js 的模块路径解析功能(这涉及在多个目录中搜索匹配文件:Web 浏览器无法访问目录列表,只能访问 URL)。

这些说明假设您使用的是 Webpack 之类的工具,它使用 Node.js 将 JS 模块捆绑到单个文件中以交付给浏览器。他们不假设您要将模块直接加载到浏览器中。

【讨论】:

以上是关于为啥我需要使用已安装库的相对路径?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 .htaccess 文件重定向到完整的服务器路径而不是相对路径?

HTML相对路径与绝对路径~~~~~~遇到的问题..为啥会这样?

在 Maven 中,我可以在当前项目上方指定相对路径吗?

idea 取相对路径时为啥多个idea 字符

为啥使用 DataFrame 时 Spark 会报告“java.net.URISyntaxException:绝对 URI 中的相对路径”?

从“node_modules”以外的位置引用 NodeJS 库而不使用相对路径