javascript - 找不到模块 : Error: Can't resolve './templates'

标签 javascript typescript webpack

我有这个 javascript (TypeScript) 文件

索引.ts

import 
'../node_modules/bootstrap/dist/css/bootstrap.min.css';
import 'bootstrap';
import * as templates from './templates';

document.body.innerHTML = templates.main;

const mainElement = 
document.body.querySelector('.b4.main');
const alertsElement = 
document.body.querySelector('.b4-alerts');

mainElement.innerHTML = templates.welcome;
alertsElement.innerHTML = templates.alert;

当我运行我的项目(使用 webpack 开发服务器)时,出现以下错误:

Module not found: Error: Can't resolve './templates' in '/Users/BorisGrunwald/Desktop/Node/b4-app/app'

我不明白为什么它似乎找不到“templates.ts”,因为这两个文件都在同一个文件夹中。

这是我的项目结构的图片:

enter image description here

我的 webpack 配置:

'use strict';

const path = require('path');
const distDir = path.resolve(__dirname,'dist');

const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack');

 module.exports = {
    entry: './app/index.ts',
    output: {
        filename: 'bundle.js',
        path: distDir
    },
    devServer: {
        contentBase:distDir,
        port:60800
    },
    plugins: [
        new HtmlWebpackPlugin({
            title: 'Better Book Bundle Builder'
        }),
        new webpack.ProvidePlugin({
            $:'jquery',
            jQuery:'jquery'
        })
    ],
    module: {
        rules: [{
            test:/\.ts$/,
            loader:'ts-loader'
        },{
            test: /\.css$/,
            use:['style-loader','css-loader']
        },{
            test: /\.(png|woff|woff2|eot|ttf|svg)$/,
            loader:'url-loader?limit=100000'
        }]
    }
};

模板.ts

export const main = `
    <div class="container">
        <h1>B4 - Book Bundler</h1>
        <div class="b4-alerts"></div>
        <div class="b4-main"></div>
    </div>
`;

export const welcome = `
    <div class="jumbotron">
        <h1>Welcome!</h1>
        <p>B4 is an application for creating book bndles</p>
    </div>
`;

export const alert = `
    <div class="alert alert-success alert-dismissible fade in" 
role="alert">
        <button class="close" data-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">&times;</span>
        </button>
        <strong>Success!</strong> Bootstrap is working
    </div>
`; 

谁能看出哪里出了问题?

最佳答案

尝试一下是否可行。这将允许从没有点的文件夹导入。

import {main, welcome, alert} from './templates';

Webpack 默认不查找 .ts 文件。您可以配置 resolve.extensions 来查找 .ts。也不要忘记添加默认值,否则大多数模块都会中断,因为它们依赖于自动使用 .js 扩展这一事实。

resolve: {
    extensions: ['.ts', '.js', '.json']
}

这也适用于所有其他文件,例如 .scss 文件等。错误将是 SassError: Can't find stylesheet to import.

关于javascript - 找不到模块 : Error: Can't resolve './templates' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53326801/

相关文章:

angular - 如何在 typescript 中使用 map 运算符上的类型?

javascript - 如何分别获取 CSV 标题和行 Typescript

javascript - 如何将格式从字符串日期更改为 utc

webpack - 带有 pug-loader 的 html-webpack-plugin 没有选择选项

javascript - jQuery 搜索表单 - 如何定向到内部页面

javascript - 连接具有不同编码的 javascript 文件

javascript - fatal error : Function name must be a string in/home/User/public_html/website/index. php 第 7 行

javascript - 如何在 React 中收集所有选中复选框的 ID 并将值推送到数组

javascript - 从外部 webpack 导入(运行时导入)

javascript - 从全局范围访问 webpack 模块/变量