Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法在JS中的服务器端要求标记_Javascript_Node.js_Express_Riot.js - Fatal编程技术网

Javascript 无法在JS中的服务器端要求标记

Javascript 无法在JS中的服务器端要求标记,javascript,node.js,express,riot.js,Javascript,Node.js,Express,Riot.js,当我声明:require('./public\u html/Tags/blog\u post\u details.tag')时,我得到以下错误: E:\WORKSPACE\NETBEANS_WORKSPACE\MyProject\public_html\Tags\blog_post_details.tag:1 (function (exports, require, module, __filename, __dirname) { <blog_post_details >

当我声明:
require('./public\u html/Tags/blog\u post\u details.tag')
时,我得到以下错误:

E:\WORKSPACE\NETBEANS_WORKSPACE\MyProject\public_html\Tags\blog_post_details.tag:1
(function (exports, require, module, __filename, __dirname) { <blog_post_details >
                                                              ^

SyntaxError: Unexpected token <
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:387:25)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Module.require (module.js:367:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (E:\WORKSPACE\NETBEANS_WORKSPACE\MyProject\server.js:7:1)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)

node
require
函数仅识别Javascript文件中以
.js
结尾的文件,
.json
用于json文件,
.node
用于节点运行时的二进制扩展名。对于Javascript文件,如果节点的模块系统可以找到文件或模块(即在
Node\u modules
下),则可以省略尾部的
.js

从您的示例中,似乎您正在尝试从客户端代码使用
require
。除非您使用
browserify
webpack
或另一个客户端捆绑程序(提供自己的
require
客户端版本),否则您无法使用它


正如我在下面的评论中所指出的,您提供的视频链接显示了通过
webpack
加载标记文件的客户端代码。您需要检查webpack的配置,以确保它正确绑定了您的标记文件,以便交付到浏览器。再次从视频中,示例代码从
/tags/filename.tag
加载其标记文件,该路径的根由webpack定义。

我从3:32的示例()中看到……使用
require
进行标记是可行的,但我不确定其抛出错误的原因。该示例使用webpack作为绑定器。时间2:09,它似乎正在从客户端的本地位置加载标记文件(通过网页包)。我会检查webpack配置文件,确保它在发送到浏览器的包中包含您的标记文件。我已经有了webpack配置。用config detailsHm更新了这个问题,webpack config似乎加载了
*.tag
文件,所以我猜加载程序代码是区分大小写的。你的标签在
/tags
下,它希望它们在
/tags
下。嗯,我以为预加载程序正在加载它,所以我在加载程序中注释了它。将编译并检查
var path = require('path');
var webpack = require('webpack');
module.exports = {
    entry: './index.js',
    output: {
        path: __dirname,
        filename: 'public_html/assets/js/bundle.js'
    },
    resolveLoader: {
        root: path.join(__dirname, 'node_modules')
    },

    module: {
        preLoaders: [{
            test: /\.tag$/,
            exclude: /node_modules/,
            loader: 'riotjs-loader',
            query: {
                //type: 'none'
                //compact: true
            }
        }],
        loaders: [
            /*{
                test: /\.tag$/,
                loader: 'tag',
                exclude: /node_modules/
            },*/
            {
                test: /\.js$/,
                loader: 'babel-loader',
                exclude: /node_modules/,
                query: {
                    //commenting because of this issue https://github.com/mapbox/mapbox-gl-js/issues/3422
                   // presets: ['es2015']
                }
            }
        ]
    },
    plugins: [
        new webpack.optimize.OccurenceOrderPlugin(),
        new webpack.ProvidePlugin({
            riot: 'riot'
        })
    ]
};