Получена ошибка «Не удается найти модуль» при попытке импортировать определенный файл JS - PullRequest
0 голосов
/ 18 февраля 2020

Я сейчас учусь JS, и это коды из практики. (из YDKJSY)

Это публикация . js

function printDetails(title,author,pubDate) { 
    console.log(` 
    Title: ${ title } 
    By: ${ author } 
    ${ pubDate } `
    ); 
}
export function create(title,author,pubDate) { 
    var publicAPI = { 
        print() { 
            printDetails(title,author,pubDate); 
        } 
     };
return publicAPI;
}

И это пост в блоге. js import публикация. js

import { create as createPub } from "publication.js";
function printDetails(pub,URL) { 
    pub.print(); console.log(URL); 
}
export function create(title,author,pubDate,URL) { 
    var pub = createPub(title,author,pubDate);
var publicAPI = { print() { printDetails(pub,URL); 
        } 
    };
return publicAPI;
}

И наконец main. js import blogpost. js

import { create as newBlogPost } from "blogpost.js";
var forAgainstLet = newBlogPost( 
    "For and against let", 
    "Kyle Simpson", 
    "October 27, 2014", 
    "https://davidwalsh.name/for-and-against-let" 
);

Я преобразовал этот код по babel и получил преобразованные коды.

PS C:\users\leepc\babel> npm run build

> babel@1.0.0 build C:\users\leepc\babel
> babel ./public/src -d ./public/lib -w

public\src\blogpost.js -> public\lib\blogpost.js
public\src\main.js -> public\lib\main.js
public\src\publication.js -> public\lib\publication.js

но когда я делаю npm run build и попытался запустить main. js Я получил это,

PS C:\users\leepc\babel\public\lib> node main.js

internal/modules/cjs/loader.js:984
  throw err;
  ^

Error: Cannot find module 'blogpost.js'
Require stack:
    at Module.require 
(internal/modules/cjs/loader.js:1043:19)     
    at require (internal/modules/cjs/helpers.js:77:18)
    at Object.<anonymous> 
(C:\users\leepc\babel\public\lib\main.js:3:17)     
    at Module._compile 
(internal/modules/cjs/loader.js:1157:30)    3:17)     
    at Object.Module._extensions..js 
(internal/modules/cjs/loader.js:117     
7:10)                                                                        
    at Module.load (internal/modules/cjs/loader.js:1001:32)                  
    at Function.Module._load 
(internal/modules/cjs/loader.js:900:14)         

    at Function.executeUserEntryPoint [as runMain] 
(internal/modules/run
_main.js:74:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ 
'C:\\users\\leepc\\babel\\public\\lib\\main.js' ]

}

Я проверил, забыл ли я какой-либо взнос.

PS C:\users\leepc\babel> npm ls --depth=0

babel@1.0.0 C:\users\leepc\babel
+-- @babel/core@7.8.4
+-- babel-cli@6.26.0
+-- babel-preset-env@1.7.0
`-- babel-preset-es2015@6.24.1

Lastley, около .babelr c

{
  "presets": ["env"]
}

и . json build,

{
    ...
    "build": "babel ./public/src -d ./public/lib -w"
  }

Я использовал node.js пресет, но он получал странные ошибки, поэтому я просто ушел, если с "env" .

Извините за грязный и длинный код, но у меня были проблемы с этой проблемой в эти дни и не могу продолжить обучение. Пожалуйста, дайте мне знать, есть ли какая-либо другая информация, которую я должен опубликовать и отредактировать в этом вопросе.

edit: возможно это потому, что я поместил все эти файлы в одну папку? я должен положить их в определенную другую папку? Это изображение папки моего тренировочного проекта

Ответы [ 3 ]

0 голосов
/ 18 февраля 2020

пожалуйста, попробуйте ваши модули относительно вашего файла для импорта. Обычно импорт без путей выполняется для node_modules.

import { create as newBlogPost } from "./blogpost.js"; 
// or wherever your blogpost.js is relative to your main.js
...
0 голосов
/ 19 февраля 2020

Хорошо, получается, я должен объединить оба ответа выше.

Сначала я должен проверить, является ли мой плагин импорта правильным или неправильным. Так что я просто переустановил его.

npm install babel-plugin-import --save-dev

Убедитесь, что не забыли поставить опции плагина. В моих случаях я использую это в .babelr c

{
    "presets": ["es2015"],
    "plugins": [["import", { "libraryName": "antd" }]]
}

эта строка "plugins": [["import", { "libraryName": "antd" }] означает импорт js modulary.

А также в следующем материале , Мне нужно исправить путь импорта.

import { create as newBlogPost } from "blogpost.js"; 

замените его на

import { create as newBlogPost } from "./blogpost.js"; 

Теперь я могу получить желаемый результат.

PS C:\Users\leePC\babel\public\lib> node main.js

    Title: For and against let 
    By: Kyle Simpson 
    October 27, 2014 

В основном: 1. Проверьте, не пропустил ли я некоторые плагины или пакеты (в моих случаях я забыл импортировать пакет) 2. Убедитесь, что проверили ваш путь импорта

Спасибо за помощь, ребята .

0 голосов
/ 18 февраля 2020

Вы выполнили шаги настройки из https://www.npmjs.com/package/babel-plugin-import?

npm install babel-plugin-import --save-dev

In .babelr c

{
  "plugins": [["import", options]]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...