javascript中从node_modules导入的问题

弗朗西斯科·贝卡里亚

我已经为这个问题苦苦挣扎了好几天。问题是导入效果不佳,我不知道为什么。这里有些例子:

我有一个 index.html,完全是空的,我只有脚本。像这样:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script type="module" src="/src/index.js"></script>
</body>
</html>

在 src 文件夹中,我有 index.js 和 app.js。在 app.js 中的代码是:

const helloWorld = () => {
  console.log('Hello world');
};

export default helloWorld;

在 index.js 中的代码是:

import helloWorld from 'app.js';
helloWorld()

我使用VSC Live Server扩展挂载服务器,Chrome控制台说:

未捕获的类型错误:无法解析模块说明符“app.js”。相对引用必须以“/”、“./”或“../”开头。

我说:“好的”,然后在 index.js 中尝试:

import helloWorld from './app';
helloWorld()

Chrome 控制台说:

获取http://127.0.0.1:5500/src/app net::ERR_ABORTED 404(未找到)

这个问题也发生在我的 node_modules 中的所有 npm 包中。例子:

import bootstrap from 'bootstrap';
import axios from 'axios';

铬控制台:

未捕获的类型错误:无法解析模块说明符“引导程序”。相对引用必须以“/”、“./”或“../”开头。

未捕获的类型错误:无法解析模块说明符“axios”。相对引用必须以“/”、“./”或“../”开头。

VSC 可以识别 axios 和引导程序路由,但是在浏览器中尝试时会出现问题。例子:

axios 路线

我也尝试使用另一台本地服务器,但它也不起作用。我尝试了这个链接中解释的那个:

如何通过 npm 脚本打开浏览器到本地主机

要添加的其他内容是它说错误在 index.html 的第 1 行:

铬控制台错误

埃尔德谢
  1. 关于app.js内部的导入index.js- 你只需要写:

import helloWorld from './app.js';

它正在工作!

  1. 至于节点模块,这更复杂。通常在项目设置时(采用自动项目,例如 create-react-app),会安装一个 JS BUNDLER,例如 Webpack、rollup.JS Parcel 等。顺便说一下,这些可以帮助您处理 js 文件引用和导入……但是,一旦您创建了一个空项目并且在npm install没有 bundler 或 package.json 和更多配置的情况下使用 - 导入将变得更加困难。

阅读这篇关于如何在 JS 项目上安装模块的文章

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章