首页 > 解决方案 > node.js - 无法导入已安装的包

问题描述

我正在尝试导入moments我的main.js文件夹并且遇到了困难。我安装了npm install moment --save. 我已经尝试过require('moment')andimport moment from 'moment'语法。当我尝试使用时require,我遇到了我不记得确切的错误,但它们很常见。我已经搜索了 YouTube 和 SO,但没有一个解决方案可以解决它。这是我的package.json

{
  "name": "project",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "type": "module",
  "dependencies": {
    "live-server": "^1.2.1",
    "lodash": "^4.17.20",
    "moment": "^2.27.0",
    "node-sass": "^4.14.1",
    "requirejs": "^2.3.6"
  },
  "devDependencies": {
    "sass": "^1.26.10",
  },
  "scripts": {
    "compile:sass": "node-sass sass/main.scss style.css -w",
    "devserver": "live-server",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

index.html文件中我必须type="module"允许 ES6 导入。我究竟做错了什么?

对不起!忘记了我得到的错误(当前) TypeError: Error resolving module specifier: moment

尝试使用时requireReferenceError: require is not defined

标签: javascriptnode.jsimport

解决方案


好吧,在深入挖掘之后,让我们总结一下:

在您的情况下,您只想在使用脚本标记的文件中引用的文件中moment.js使用main.js。这与您可以用来下载时刻依赖项这一事实index.html无关。为了实现您想要做的事情,我建议您执行以下操作:node.jsnpm

使用 npm 安装 moment 依赖项

npm install moment

moment.js文件从node_modules/moment/lib文件夹(不是 src!)复制到项目中的文件夹(fe.scripts)。您可以手动执行此操作,也可以使用脚本/任务运行器执行此操作。

在 main.js 文件中,您使用

import moment from './moment.js';

并在您的 index.html 文件中使用引用 main.js 文件

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

正如我们讨论过的。这是一些体力劳动,但为了进行一些快速试验,这有时就足够了。如果您要开始实际构建一个完整大小的应用程序,我强烈建议您添加一个模块捆绑器,例如webpack谁可以将所有这些工作从您手中拿走。


推荐阅读