首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ES6导入、节点库和我的模块

ES6导入、节点库和我的模块
EN

Stack Overflow用户
提问于 2018-01-31 03:24:08
回答 1查看 5.2K关注 0票数 1

我在学习节点,但从来没有使用ES6/javascript/类型记录,所以请容忍我.

我试图用普通的ES6编写nodejs应用程序。从下面的示例(取自这里),

代码语言:javascript
运行
复制
import fs from 'fs';
export default class Animal {

  constructor(name){
    this.name = name ;
  }

  print(){
    console.log('Name is :'+ this.name);
  }
}

import Animal from 'path/to/Animal.js';

我们可以看到有两种类型的import,即require的ES6方式。一种是无路径(import fs from 'fs';),另一种是带有路径。

所以我的第一个困惑是,从这里上说,

为了与CommonJS兼容并为将来的特性做准备,不允许使用不以./或./开头的相对路径(在ES6中):

代码语言:javascript
运行
复制
// Not allowed:
import * as foo from 'foo.mjs';
import * as foo from 'lib/foo.mjs';

那么import fs from 'fs'是对还是错?

我试图编写的普通ES6 nodejs应用程序基于一个npm模块,但是由于它几乎每天都在更新,所以我从它的git中删除

代码语言:javascript
运行
复制
npm install mydepmod

这反过来又使它的示例代码以

代码语言:javascript
运行
复制
import { mydepmod } from 'mydepmod'

不是为我工作。我得到的错误是,

代码语言:javascript
运行
复制
module.js:557
    throw err;
    ^

Error: Cannot find module 'mydepmod'
    at Function.Module._resolveFilename (module.js:555:15)
    at Function.Module._load (module.js:482:25)
    at Module.require (module.js:604:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/path/to/example/the-test.js:19:21)
    at Module._compile (module.js:660:30)
    at Object.Module._extensions..js (module.js:671:10)
    at Module.load (module.js:573:32)
    at tryModuleLoad (module.js:513:12)
    at Function.Module._load (module.js:505:3)

所以我的最后一个问题是如何让它发挥作用?

顺便说一句,我尝试了它的码头安装和运行,从码头(从import { mydepmod } from 'mydepmod'开始)工作没有任何问题,所以我假设如果我做npm install mydepmod,它也应该工作。

总之,如何使我的git拉出依赖模块像npm installed模块一样工作。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-31 04:01:39

当您使用前缀为'./‘的相对路径导入时,它将从该文件加载模块,您可以给出完整的路径,如'/ path /to/ module’。

当您导入任何没有路径的模块时,节点将查找该模块。

  • node_modules文件夹中,或者在该目录中,或者在存在package.json的任何父目录中。
  • 如果无法从该目录加载模块,则节点尝试从位于用户目录(例如,node_modules )的全局node_modules文件夹加载该模块。
  • 如果节点在此阶段无法加载模块,那么它将抛出错误,表示为Can not find module

这里是对require工作方式的详细描述。需求和导入/导出是相似的,文章给出了需求和导入/导出的区别。

对于本地node_modules和全局node_modules之间的区别,这里是一个讨论。

在不同的os环境下,全局node_modules的定位是不同的。根据的回答:

在Unix系统上,当全局安装时,它们通常放在/usr/local/lib/node/usr/local/lib/node_modules中。如果将NODE_PATH环境变量设置为此路径,则可以通过节点找到模块。

Windows %USERPROFILE%\Application Data\npm\node_modules Windows 7、8和10 - %AppData%\npm\node_modules

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48533944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档