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

时间:2020-11-08 10:52:28

标签: javascript npm npm-install yarnpkg

上下文: 我正在尝试将Editor.js库用于个人项目

Editor.js documentation

有项目目录:

enter image description here

有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 个答案:

答案 0 :(得分:0)

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

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

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