【问题标题】:Unable to Import es6 modules from supported browser无法从支持的浏览器导入 es6 模块
【发布时间】:2019-05-19 12:15:30
【问题描述】:

尝试将 moment.js 作为 es6 模块导入。正在使用最新的 Chrome 版本。
根据here的讨论,我尝试了src路径(es6)

import * as moment from './node_modules/moment/src/moment'

虽然跳过 .js 似乎对该线程上的每个人都可以正常工作,但我无法让它工作。但这行得通

import * as moment from './node_modules/moment/src/moment.js'

然而,请求最终失败,导入尝试在没有 js 扩展的情况下加载其依赖项

 GET http://127.0.0.1:8083/node_modules/moment/src/lib/utils/hooks net::ERR_ABORTED 404 (Not Found) moment.js:22
 GET http://127.0.0.1:8083/node_modules/moment/src/lib/moment/moment net::ERR_ABORTED 404 (Not Found) moment.js:26 
 GET http://127.0.0.1:8083/node_modules/moment/src/lib/moment/calendar net::ERR_ABORTED 404 (Not Found) moment.js:39 
 GET http://127.0.0.1:8083/node_modules/moment/src/lib/locale/locale net::ERR_ABORTED 404 (Not Found) moment.js:46 
 GET http://127.0.0.1:8083/node_modules/moment/src/lib/duration/duration net::ERR_ABORTED 404 (Not Found) moment.js:48 
 GET http://127.0.0.1:8083/node_modules/moment/src/lib/units/units net::ERR_ABORTED 404 (Not Found) moment.js:50 
 GET http://127.0.0.1:8083/node_modules/moment/src/lib/utils/is-date net::ERR_ABORTED 404 (Not Found) 

我所有的代码都是一个带有这个脚本标签的空白 index.html

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

还有一个带有这个的 main.js 文件

import * as _ from './node_modules/underscore/underscore.js';
import * as moment from './node_modules/moment/src/moment.js';

Underscore.js 导入并且工作正常。问题只是瞬间。 我究竟做错了什么?还有为什么我不能在不指定 .js 扩展名的情况下加载其中任何一个,而显然 ithub 线程上的那些已经能够做到这一点

import * as moment from 'moment'

【问题讨论】:

    标签: javascript npm ecmascript-6 momentjs


    【解决方案1】:

    从 ES6 开始我有类似的问题。你可以试试这种方式导入moment

    import moment from "moment";
    

    【讨论】:

    • 未捕获的类型错误:无法解析模块说明符“moment”。相对引用必须以“/”、“./”或“../”开头。
    • 是的,它有效。但是你需要确保之前安装的时刻。我认为您再次运行命令npm install moment --save 以确保已安装lib
    • 大功告成。这就是为什么时刻在我的 node_modules 文件夹中并且我的 package.json 已更新。
    • 记住 - 我没有使用任何捆绑器或模块加载器。我所做的只是直接从我的脚本导入,并依靠支持 es6 的浏览器来处理导入。
    • 最新版本。我的意思是这是我的代码字面上创建一个空白文件夹 1. 执行 npm init 2. npm install moment 3 创建一个空白 html 并包含 4 . 使用此行创建一个 main.js import * as moment from './node_modules/moment/src/moment.js' 在 chrome 中加载 html。观察开发者控制台
    猜你喜欢
    • 2019-03-04
    • 2020-03-21
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    • 2020-12-20
    • 2018-11-12
    相关资源
    最近更新 更多