javascript - 当我尝试导入某些 JS 文件时出现“找不到模块”错误
问题描述
我目前正在学习 JS,这是来自实践的代码。(来自 YDKJSY)
这是一个publication.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;
}
而这个blogpost.js导入publication.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导入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,关于.babelrc
{
"presets": ["env"]
}
和package.json构建,
{
...
"build": "babel ./public/src -d ./public/lib -w"
}
我使用了 node.js 预设,但它出现了奇怪的错误,所以我只是离开了"env"。
抱歉,代码凌乱而冗长,但这些天我一直在为这个问题而烦恼,无法继续学习。请让我知道我必须在这个问题中发布和编辑任何其他信息。
编辑:这可能是因为我将所有这些文件放在同一个文件夹中吗?我应该把这些放在某个不同的文件夹中吗? 这是我练习项目文件夹的图片
解决方案
请尝试让您的模块相对于您的文件进行导入。通常,没有路径的导入用于node_modules
.
import { create as newBlogPost } from "./blogpost.js";
// or wherever your blogpost.js is relative to your main.js
...
推荐阅读
- powershell - 如何在 Powershell 中转换 UTC 日期时间字符串
- angularjs - 为什么 angularjs 网站可以在桌面上运行,但不能在移动设备上运行?
- python - 如何在 Redis 中保存复杂的数据结构?
- go - 在 golang 中的 aerospike GET "read tcp *.*.*.*:39068-> *.*.*.*:3000: i/o timeout" 期间出现错误
- xamarin - 使用 MvvmCross Binding Xamarin.iOS 中的标志从 SuperView 中删除视图
- logstash - Logstash:根据某些条件重命名嵌套字段
- python - 如何使用flask-restplus的fields.Url进行mongoengine文档查询集?
- highcharts - React highcharts,将图例显示为条形图
- ruby - 如何将 Nokogiri 元素分配给哈希键
- reactjs - react-select focus() 更改后不显示光标