首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >babel -plugin-root-带babel 7导入

babel -plugin-root-带babel 7导入
EN

Stack Overflow用户
提问于 2018-06-27 12:36:01
回答 1查看 3.8K关注 0票数 1

我正在尝试安装Babel 7,以前从未使用过Babel,所以我真的是从零开始。我已经成功地安装和使用了@babel/plugin-proposal-optional-chaining,但是我正在与babel-plugin-root-import做斗争。

这是我的package.json

代码语言:javascript
复制
//package.json

"scripts": {
  "start": "nodemon src/index.js --exec babel-node"
},
"devDependencies": {
  "@babel/cli": "^7.0.0-beta.51",
  "@babel/core": "^7.0.0-beta.51",
  "@babel/node": "^7.0.0-beta.51",
  "@babel/preset-env": "^7.0.0-beta.51"
},
"dependencies": {
  "@babel/plugin-proposal-optional-chaining": "^7.0.0-beta.51",
  "@babel/polyfill": "^7.0.0-beta.51",
  "babel-plugin-root-import": "^6.1.0"
}


//babel.config.js

module.exports = {
  "presets": ["@babel/preset-env"],
  "plugins": [
    ["@babel/plugin-proposal-optional-chaining"],
    ["babel-plugin-root-import",{
      "rootPathPrefix": "@"
    }]
  ]
};

下面是我的代码:

代码语言:javascript
复制
//src/index.js

require("./foo/index.js")();

//src/foo/index.js

module.exports = function() {
  console.log("Foo loaded")
}

当我执行上面的代码时,我会在我的控制台中得到Foo loaded

当我用以下内容更改src/index.js时:

代码语言:javascript
复制
//src/index.js

require("@/foo/index.js")();

我得到以下错误:

代码语言:javascript
复制
internal/modules/cjs/loader.js:596
    throw err;
    ^

Error: Cannot find module '../foo/index.js'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:594:15)
    at Function.Module._load (internal/modules/cjs/loader.js:520:25)
    at Module.require (internal/modules/cjs/loader.js:650:17)
    at require (internal/modules/cjs/helpers.js:20:18)
    at Object.<anonymous> (C:\Node.js\dev\babel7\src/index.js:2:1)
    at Module._compile (internal/modules/cjs/loader.js:702:30)
    at Module._compile (C:\Node.js\dev\babel7\node_modules\pirates\lib\index.js:91:24)
    at Module._extensions..js (internal/modules/cjs/loader.js:713:10)
    at Object.newLoader [as .js] (C:\Node.js\dev\babel7\node_modules\pirates\lib\index.js:96:7)
    at Module.load (internal/modules/cjs/loader.js:612:32)
[nodemon] app crashed - waiting for file changes before starting...

如果我没有在rootPathPrefix中设置babel.config.js,我也不能使用以~开头的路径插件,这应该是默认值。怎么啦?

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-27 16:40:02

如果您直接使用npx babel src/index.js运行babel-cli以检查输出,您将发现根导入插件正在正确地更改:

代码语言:javascript
复制
require("@/foo/index.js")();

转入:

代码语言:javascript
复制
require("../foo/index.js")();

@ (项目根目录)在src文件夹中的index.js文件中被正确地替换为..

如果希望@引用root/src,可以设置"rootPathSuffix": "src"选项。如果没有这样的选择,你就必须这样做:

代码语言:javascript
复制
require("@/src/foo/index.js")();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51062967

复制
相关文章

相似问题

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